php - Azure AD Auth - 仅注销特定应用程序/?
问题描述
这是我的注销代码(使用 CakePHP)。
public function logout()
{
$this->clearTokens();
$this->Authentication->logout();
return $this->redirect('https://login.microsoftonline.com/' .
Configure::read('Azure.tenantId') . '/oauth2/logout?post_logout_redirect_uri='
. urlencode('https://example.com/'));
}
所以用户在应用程序中点击“注销”;它清除了一些会话数据;然后重定向到 Microsoft 以正确注销并再次重定向回来。
这似乎工作正常,但它让我退出一切 - 我希望只退出特定的应用程序 - 我已经替换tenantId
但appId
似乎没有任何区别。
这可能吗?
解决方案
您的注销行为与官方文档中的描述不符。
当您将用户重定向到 end_session_endpoint 时,Microsoft 标识平台会从浏览器中清除用户的会话。但是,用户可能仍会登录到使用 Microsoft 帐户进行身份验证的其他应用程序。为了使这些应用程序能够同时注销用户,Microsoft 标识平台向用户当前登录的所有应用程序的已注册 LogoutUrl 发送 HTTP GET 请求。
换句话说,仅调用/logout?post_logout_redirect_uri={0}
端点不足以让您的用户退出所有应用程序。您仍然需要LogoutUrl
从应用程序注册门户设置并LogoutUrl
在应用程序代码中实现此类以支持应用程序中的单点注销。
确保您删除了LogoutUrl
配置中的部分,它不会让您从任何地方注销。
推荐阅读
- python - 基于 Python 代码在 R 中绘制断棒过程
- java - 是否可以在 android studio 中启用 jdk11 功能?
- algorithm - 在球冠上找到均匀分布的随机点
- ruby-on-rails - Faraday::ConnectionFailed:读取函数返回有趣的值
- javascript - 挂载所有项目后插入外部脚本
- dart - VSCode中的Powershell终端找不到stagehand
- image - 单击变体图像必须更改下拉shopify中的变体值
- javascript - 在 Ionic 框架中使用 xdrip-js
- python - 为什么这段代码在 Windows 和 Linux 之间打印出不同的结果?
- ios - 当委托字段不被称为 `delegate` 时实现 `DelegateProxy` (RxSwift/RxCocoa)