尝试通过 mod_auth_openidc 使用 Converged Microsoft Account 和 Azure AD

Trying to use Converged Microsoft Account and Azure AD with mod_auth_openidc

阅读以下文章后:

http://blogs.technet.com/b/ad/archive/2015/08/12/azure-ad-microsoft-account-preview-sign-in-personal-and-work-accounts-using-a-single-stack.aspx

我尝试根据以下文档实施 OpenID Connect/Oauth 代码流:

https://azure.microsoft.com/en-us/documentation/articles/active-directory-appmodel-v2-overview/

我使用 mod_auth_openidc 作为我的依赖方(我与 Google 和我自己的 OpenID 提供商合作。

我已经在 https://apps.dev.microsoft.com 注册了我的应用程序,并完成了所有步骤。我在 Microsoft 获得登录屏幕,然后是权限屏幕,当它重定向回我的站点并点击 mod_auth_openidc 时,我收到一条错误消息:

错误:

OpenID Connect 提供程序返回错误:处理响应类型时出错。

在我的 Apache 错误日志中,我得到: oidc_proto_validate_code_response: requested flow is "code" but no "access_token" parameter found in the code response, referer: https://login.microsoftonline.com/common/oauth2/v2.0/authorize?response_type=code&scope=openid&client_id=xxx&state=yyy&redirect_uri=https%3A%2F%2Fdst-dev.mydomain.com%2Foauth2callback&nonce=zzz

oidc_proto_resolve_code_and_validate_response: code response validation failed,

我想弄清楚的是问题出在哪里。 Microsoft 发送的 mod_auth_openidc 是否存在问题,或者 mod_auth_openidc 端是否存在错误或配置问题?

MS网页的示例在身份验证请求中使用了不同的响应模式和响应类型:

&response_mode=form_post&response_type=code+id_token

两者均受 mod_auth_openidc 支持,因此您可以通过包含以下内容来应用类似的内容:

OIDCResponseType id_token
OIDCResponseMode form_post

在 Apache 配置中或在 .conf 文件中为 Microsoft 使用多个提供程序时使用相关原语。