php - 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。
解决方案
只需将评论汇总为回复,以帮助遇到相同问题的其他人。
response_mode
:指定应用于将生成的授权代码发送回您的应用程序的方法。可以是form_post
或fragment
。对于 Web 应用程序,我们建议使用response_mode=form_post
, 以确保最安全地将令牌传输到您的应用程序。
如果你想在 中使用code + id_token
,response_type
你应该使用 OIDC Hybrid Flow。
但是,如果您只是在 中使用code
,则response_type
应该使用授权码流程。
有关更多详细信息,您可以参考此SO 线程。
推荐阅读
- sql-server - Visual Studio SQL Server 数据比较“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'MyTable' 中插入标识列的显式值”
- excel - 将工作簿中的所有 Excel 选项卡合并到另一个工作簿上的最小选项卡中
- visual-studio-code - 在 VSCode 中格式化注释块
- python - 文本分类 - 处理不属于任何类别的文本
- c++ - 来自 C++ QAbstractListModel 的 Qml ListView 与 QThread 处理
- android - 如何在 Activity 之外使用 Image Uri?
- javascript - svg 可以在直接添加到 dom 时显示,但不能在其 base64 转换字符串作为 img 源传递时显示
- sql - SQL 正则表达式替换多个条件
- airflow - Airflow 2.0 - 重复键值违反唯一约束“ab_view_menu_name_key”..键(名称)=(DAG:xxx)已经存在
- jquery - JQuery Toggle show hide