首页 > 解决方案 > Azure 单点登录 - 重定向循环

问题描述

我在使用 Azure AD 为我们的 pHp 网站设置简单单点登录时遇到问题。该应用程序在 azure 中注册,我拥有所有必要的详细信息,例如客户端 ID、机密、租户。

我的要求是获得授权并撤回用户的员工 ID、姓名和电子邮件 ID。我是第一次进行单点登录,需要一些帮助。

在创建授权 URL 时,我正在请求code,这根据 Azure 文档是正确的。授权后我可以成功检索代码。但是,我无法请求id_token以及作为response_type=code+id_token的代码,这应该是可能的。我可以跟踪 URL 流并手动提取id_token字段。如果我这样做,系统会提示我登录和 MFA。但是,只要在我的手机上提示无限数量的 MFA ping,响应就会进入无限循环。这很奇怪,我的程序有一个检查以重定向代码响应,这似乎不起作用。我也尝试过使用 session_id cookie,它具有相同的行为。

如果我只是选择代码作为响应类型并使用令牌授予 URL 请求id_token,我不会得到任何响应。它的空白或 null 但没有错误。

如果我犯了错误,请你帮忙建议一下。我先请求代码然后再请求令牌的方法是对还是错。如何成功检索 id_token。

标签: phpazureazure-active-directory

解决方案


只需将评论汇总为回复,以帮助遇到相同问题的其他人。

response_mode:指定应用于将生成的授权代码发送回您的应用程序的方法。可以是form_postfragment对于 Web 应用程序,我们建议使用response_mode=form_post, 以确保最安全地将令牌传输到您的应用程序。

如果你想在 中使用code + id_tokenresponse_type你应该使用 OIDC Hybrid Flow。

但是,如果您只是在 中使用code,则response_type应该使用授权码流程。

有关更多详细信息,您可以参考此SO 线程


推荐阅读