Azure AD元数据和userinfo不支持CORS

Rah*_*til 1 openid azure azure-active-directory openid-connect

我正在开发一个使用OIDC与Azure AD应用程序对话的JS应用程序.以下是身份验证和验证的流程 -

  1. 将用户重定向到常用登录端点
  2. 在回调网址上获取访问令牌,id_token等
  3. 使用从发现的URL检索的jwt密钥验证响应 - https://login.microsoftonline.com/common/discovery/keys
  4. 从已发现的userinfo网址获取用户信息-https://login.microsoftonline.com/common/openid/userinfo
  5. 根据设置,将信息存储在本地/会话存储中.

Azure AD的问题是,我们无法完成步骤3和4.两个URL都不支持CORS.我们无法验证我们获得的令牌,也无法检索用户信息.

有没有更好的方法来获取Microsoft的OpenID for Azure AD实现中的userinfo?

Sac*_*aca 7

您是对的,Azure AD不支持元数据URL或密钥URL的CORS.

一般指导是不验证id_token,因为您应该仅将这些声明用于显示目的而不是驱动任何核心功能.

对于核心功能(也称为API调用),您应该使用access_tokens,后端应该验证,不需要启用CORS的端点.

你会看到这些校长在Azure的AD SPA样品,其中authContext.getCachedUser()adal.js 用来获得阅读用户,没有任何验证它的要求.

如果您需要更多经过验证的用户信息,则指导的是调用Graph以通过Microsoft Graph的/ me端点获取用户信息.您可以在Azure AD Xamarin示例中看到此模式.

您可以在Azure AD反馈论坛中为请求投票:添加对发现和json Web密钥集端点的CORS支持.