我们有以下设置:

互联网 - >防火墙(Juniper) - >客户端应用程序(Angular 5) - >身份提供商(后称为IDP)

案例1:

  • 用户访问客户端应用程序 intranet

  • 客户端应用程序使用"implicit" flow从IDP对用户进行身份验证

  • 客户端应用程序访问 http://< IDP_URL>/.well-known/openid-configuration

  • 使用"authorization_endpoint"等与IDP进行通信

  • 它完美无缺 .

案例2:

  • 用户访问客户端应用程序 internet

  • 因为,客户端应用程序可以从防火墙(juniper)访问它发送请求并接收响应

  • 此后,Juniper对IDP_URL进行编码 . 新的URL成为

http:// < Juniper_URL>/ ,DanaInfo = < IDP_Encoded_URL>/ .well-known / openid-configuration

  • 发现文档包含“authorization_endpoint”

https://< IDP_URL>/connect/authorize

而不是

http://< Juniper_URL>/,DanaInfo=< IDP_Encoded_URL>

  • 浏览器尝试连接

https:// < IDP_URL > / connect / authorize?client_id = xxxx&redirect_uri = xxx

然后失败了请求,因为它不存在 .

问题:

  • 我能以某种方式更新"IdentityServer4"的"authorization_endpoint"吗?如果我能够将其更新为Juniper_Encoded_Url . 那会有用吗?

参考:

Juniper中的URL编码/解码:https://lab.mediaservice.net/code/junidec.c

任何解决方案将受到高度赞赏 .