Asp.net 通过 openidConnect 方法对 identityServer3 中的 IDP 进行核心 2.0 授权

Asp.net core 2.0 authorization through openidConnect method to IDP made in identityServer3

我正在尝试连接内部 SSO 服务器,此 SSO 是使用 IdentityServer3 创建的。它适用于我们现有的 MVC 5 应用程序。最近我们正在将我们的产品升级到 ASP.net CORE 2.0.

我们 运行 遇到身份验证过程的问题。经过大量挖掘,我发现它连接了我们的授权端点;但是有些连接登录失败的原因。

MVC-5 使用 OWIN 实现来连接 OpenIdConnect。 这是来自 MVC-5

的 URL
identity/connect/authorize?client_id=XXXX
&redirect_uri=XXXXXXXXXXXXXXXXXXX
&response_mode=form_post&response_type=id_token+token&scope=openid+api&state=OpenIdConnect.AuthenticationProperties%3dwFuNqQIdG7E9axIWsGRaxqn8Aikv4B839r1HfWPm57n9RZ5Ig8BK-r2WuNclpcGZr0Ch2GThSpZ53ShE1zBESfxrSHts_I2iLYfTCvBa0Kd-uRueov-NpXDJOh39yh_f-h8TMcCXRe9S3cvE2eWp64dqJLJZM8EqBsW77b-keS3SvTB2KU0X7NqW-VGdI2StBn0y4kiWg9mZseGS4chgsA&nonce=636483566187911271.OTVmNDY1NGQtZDgxZS00ZjllLThjYzQtYjVkNGYxMGM5ZGZhZGI4MzMyYjctMTBiNi00OGQ3LThmOWItNGExNTc5OGFiYTA4

Asp.net Core 在内置的 OpenId Connect 方法中使用。 这里 URL 来自 ASP.net core 2.0

identity/connect/authorize?
client_id=XXXXX
&redirect_uri=XXXXXXXXXXXXX &response_type=code
&scope=openid%20api
&response_mode=form_post
&nonce=636483740666280555.NDA3ZGRjZDQtNTdjNS00NjFiLTllOTYtMDc0MjE2NzhkMzQ5NmFiMzU0ZTQtMDIxOS00ODI5LWI4NWEtYTRiMDYzMTFmYjJi&state=CfDJ8AqnlI2Cn3FJtTEVow2y5i5Kt7x-JhPHvqlWGUu6jOxJQQiBB53rtgKV7_nXM4zY0MbzFPQUuONdoyEmX61bexqlAmbTmpEnVC5CHkr41q4b6e3_JtWTBaCOa3vT1_vCNNnIS6lQW3RH4nV-SQ5PUyVr2IzMO3feVRrkS-NLnLAuUXyKSR3gk0LtuzESq_xQ0dtdrjnWr5-dbCyOvG0p3vFhlaQeKyT55q2jZyM4sO0T7B524l6ICz2cKEVLdR6VU2RpjqV_UAlwM7i9Mm7yo_kbCBbtaOOZDWjDVj6XDop0YUmYJhMLGnlXWVBjD87vmg
&x-client-SKU=ID_NET&x-client-ver=2.1.4.0

如果您注意到 ASP.net CORE openIdConnect 添加了 nonce 参数,根据规范这是可选的;但是,我无法摆脱它的产生。 另一个问题是 State 参数的生成方式不同。

任何帮助使其与 Asp.net Core 2.0 到 identityServer3 一起工作。我没有在博客社区找到任何帮助。

请放心,我正在传递正确的参数,如果我使用 MVC 5,所有参数都可以正常工作。

所以花了5天..我终于弄清楚了问题所在。这是 OpenIdConnectOptions class 中 ASP.net CORE 的基础实现更改。

请参考我向 Microsoft Asp.net 安全团队提出的 Issue