我们有以下设置:
互联网 - >防火墙(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
任何解决方案将受到高度赞赏 .