Azure AD Oauth2/OpenID 连接 Web 应用身份验证问题

Azure AD Oauth2/OpenID Connect web app authentication problems

我 运行 在让我们的代码向 Azure AD 进行身份验证时遇到了一些问题。我已经配置了一个应用程序并设置了我们的代码来请求授权“代码”。这很管用,但是当我尝试将“代码”换成“access_token”时,我遇到了各种错误。首先,我收到“已识别资源缺失”错误。我深入研究了 Manifest 并提取了一个要传递的资源 ID,但随后我收到了“缺少 client_secret”错误。

但我不确定我在这里走的路是否正确。首先,我不确定我需要访问哪些资源(如果有的话)。由于我们只是尝试进行身份验证,我认为我不需要实际请求访问任何其他 API,对吗?也许我会,但我不确定我会用它们做什么。

另外,我发现这个博客 post 看起来很鼓舞人心: http://www.andrewconnell.com/blog/azure-ad-oauth2-openid-connect

他让我看起来应该能够在初始授权请求中请求“代码”和 OpenID Connect id_token。乍一看,这似乎就是我需要做的。但是当我按照他的建议尝试将“+id_token”附加到“code”resource_type 参数时,我得到了一个“missing nonce”错误。如果我包含一个带有随机字符串的“随机数”参数,它会无误地通过并命中我的 redirect_uri 但我没有在响应中得到任何数据,当然也没有他指示我应该看到的配置文件信息在博客中 post.

如果您想进行身份验证,您肯定想使用 OpenId Connect - OAuth2 用于授权您的应用程序充当针对不同资源的客户端,而不是获取用于登录目的的令牌。我建议查看 http://aka.ms/aaddev for overviews and quickstarts. In particular, see this for an explanation of the topology and this 以快速入门如何进行 openid 连接身份验证。

添加 'response_mode=form_post' 是否允许您的应用程序接收代码和 id_token?

登录请求示例 (GET)

https://login.microsoftonline.com/common/oauth2/authorize?response_type=code+id_token&response_mode=form_post&scope=openid&client_id=insert-client-id&nonce=insert-nonce&redirect_uri=insert-redirect-uri