oauth-2.0 - Windows Live Open ID Connect/Oauth 2.0 如何使用 Apache mod_auth_openidc 进行 SSO

标签 oauth-2.0 openid-connect windows-live mod-auth-openidc

我已经与 Google 合作使用了 mod_auth_openidc,并使用了 phpOIDC 的手摇版本作为我的 OP,并使用 mod_auth_openidc 作为我的身份提供商。

我的问题似乎是 Microsoft 实现中的错误。

mod_auth_openidc 是一个很棒的 mod,并且做了相当多的验证日志。

JWT 中返回的内容之一是“aud”参数,即受众。

根据 Open ID Connect 规范:

音频 必需的。此 ID token 的目标受众。它必须包含依赖方的 OAuth 2.0 client_id 作为受众值。它还可以包含其他受众的标识符。一般情况下,aud 值是区分大小写的字符串数组。在有一个观众的常见特殊情况下,aud 值可能是单个区分大小写的字符串。

我的客户ID是00000001234(不是我的真实ID,只是一个例子)。

我完成了握手,一切都很顺利,我从 Windows Live 获取随机数“代码”,然后将其交换为我的 token ,但我得到的 token 的“aud”值为:

00000000-0000-0000-0000-00000001234

mod_auth_openidc 正确检查返回 token 中的“aud”值,并响应错误,因为“aud”与配置的 cliend_id 不匹配,根据规范,这应该匹配。

我的问题是,除了不验证 token 的受众之外,是否有任何方法可以在 MS Developer 控制台中配置应用程序,以便它为返回的 token 中的“aud”值正确返回客户端 ID?

Sans,在实现过程中报告此类错误的最佳位置在哪里?

最佳答案

实际上 login.live.com 的文档中没有任何地方表明 MS Live 兼容 OpenID Connect。它确实提到它在 OAuth 2.0 之上构建了自己的 SSO 协议(protocol)。

通过反复试验,您似乎发现 MS Live 支持 OpenID Connect 的重要部分(已知位置上的发现文档、JWKS URI、openid 范围等)。 ),这对我来说本身就是新闻。但不幸的是,似乎仍然缺少一件小事...这可能也是尚未宣布 OpenID Connect 支持 MS Live ID 的原因。

Azure AD 中的 MS OpenID Connect 实现已完全兼容,但 Live ID 尚未完全兼容。我想你能做的就是bug MS。

关于oauth-2.0 - Windows Live Open ID Connect/Oauth 2.0 如何使用 Apache mod_auth_openidc 进行 SSO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928346/

相关文章:

rest - REST API的单点登录支持

java - 交换授权码只能使用一次 - Oauth 2.0

security - Keycloak:基于角色的用户客户端登录访问限制

authentication - Microsoft Graph : How to get access token with certificate in client credentials flow?(而不是使用 client_secret)

oauth-2.0 - 用于登录的 Google+ 纯服务器端流程 (OAuth 2)

c# - OpenIddict ASP.NET Core 服务器不能用作默认方案处理程序

reactjs - 是否可以使用 IDP 独立代码在 ReactJS 中实现 open id connect SSO?

可在 Firefox 中使用的 HTML 电子邮件签名(图片相关)

delphi - 如何使用 SQL 以编程方式访问 Windows Live 照片库中的面部识别缓存?

windows-phone-8 - WP8 + 将文件上传到 Skydrive