Azure AD 元数据和用户信息不支持 CORS
Azure AD metadata and userinfo does not support CORS
我正在开发一个 JS 应用程序,它使用 OIDC 与 Azure AD 应用程序对话。这是身份验证和验证的流程 -
- 将用户重定向到公共登录端点
- 获取访问令牌,id_token 等回调 url
- 使用从发现的 url 中检索到的 jwt 密钥验证响应 -
https://login.microsoftonline.com/common/discovery/keys
- 获取发现的用户信息
userinfo
url - https://login.microsoftonline.com/common/openid/userinfo
- 根据设置将信息存储在本地/会话存储中。
Azure AD 的问题是,我们无法完成第 3 步和第 4 步。url 都不支持 CORS。我们无法验证我们获得的令牌,也无法检索用户信息。
Microsoft 为 Azure AD 实施的 OpenID 中是否有更好的方法来获取用户信息?
你是对的,Azure AD 不支持元数据 URL 或键 URL.
的 CORS
一般指导是不验证 id_token,因为您应该只将这些声明用于显示目的,而不是驱动任何核心功能。
对于核心功能(又名 API 调用),您应该使用 access_tokens,它应该由您的后端验证 ,它不需要启用 CORS 的端点.
您将在 Azure AD SPA sample where authContext.getCachedUser()
in adal.js 中看到这些原则的作用,用于在没有任何验证的情况下获取读取用户及其声明。
如果您想要更多经过验证的用户信息,指导是通过Microsoft Graph's /me endpoint. You can see this pattern in the Azure AD Xamarin Sample调用Graph获取用户信息。
您可以在 Azure AD 反馈论坛中为请求投票:Add CORS support for discovery and json web key set endpoints。
我 运行 不久前遇到了同样的问题,这些问题的解决方案是通过 API.
双跳 JWKS 和 UserInfo 调用
我还使用了经过认证且广受推崇的 OIDC Client 库,它具有 SPA 静默令牌更新和 ID 令牌验证的功能。
就我个人而言,我喜欢尽可能以开放标准的方式对我的应用程序进行编码,而不是被锁定在一个供应商。
PS。如果您认为这种解决方案适合您,这里有 GitHib Sample and some documentation.
我正在开发一个 JS 应用程序,它使用 OIDC 与 Azure AD 应用程序对话。这是身份验证和验证的流程 -
- 将用户重定向到公共登录端点
- 获取访问令牌,id_token 等回调 url
- 使用从发现的 url 中检索到的 jwt 密钥验证响应 -
https://login.microsoftonline.com/common/discovery/keys
- 获取发现的用户信息
userinfo
url -https://login.microsoftonline.com/common/openid/userinfo
- 根据设置将信息存储在本地/会话存储中。
Azure AD 的问题是,我们无法完成第 3 步和第 4 步。url 都不支持 CORS。我们无法验证我们获得的令牌,也无法检索用户信息。
Microsoft 为 Azure AD 实施的 OpenID 中是否有更好的方法来获取用户信息?
你是对的,Azure AD 不支持元数据 URL 或键 URL.
的 CORS一般指导是不验证 id_token,因为您应该只将这些声明用于显示目的,而不是驱动任何核心功能。
对于核心功能(又名 API 调用),您应该使用 access_tokens,它应该由您的后端验证 ,它不需要启用 CORS 的端点.
您将在 Azure AD SPA sample where authContext.getCachedUser()
in adal.js 中看到这些原则的作用,用于在没有任何验证的情况下获取读取用户及其声明。
如果您想要更多经过验证的用户信息,指导是通过Microsoft Graph's /me endpoint. You can see this pattern in the Azure AD Xamarin Sample调用Graph获取用户信息。
您可以在 Azure AD 反馈论坛中为请求投票:Add CORS support for discovery and json web key set endpoints。
我 运行 不久前遇到了同样的问题,这些问题的解决方案是通过 API.
双跳 JWKS 和 UserInfo 调用我还使用了经过认证且广受推崇的 OIDC Client 库,它具有 SPA 静默令牌更新和 ID 令牌验证的功能。
就我个人而言,我喜欢尽可能以开放标准的方式对我的应用程序进行编码,而不是被锁定在一个供应商。
PS。如果您认为这种解决方案适合您,这里有 GitHib Sample and some documentation.