2017-06-21 52 views
0

我正在开发一个JS应用程序,该应用程序使用OIDC与Azure AD应用程序对话。这里是认证和验证的流程 -Azure AD元数据和用户信息不支持CORS

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

Azure AD的问题是,我们无法完成第3步和第4步。这两个网址都不支持CORS。我们无法验证我们获得的令牌并且无法检索用户信息。

有没有更好的方法在微软的OpenID for Azure AD实现中获取userinfo?

回答

1

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

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

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

你会看到这些校长在Azure AD SPA sample中的行动authContext.getCachedUser()adal.js是用来获取读取用户和它的声明没有任何验证。

如果您想获得更多验证的用户信息,则指导将通过Microsoft Graph's /me endpoint调用图表以获取用户信息。您可以在Azure AD Xamarin Sample中看到此模式。

您可以为Azure AD反馈论坛中的请求投票:Add CORS support for discovery and json web key set endpoints