Cognito注销无法记录

sha*_*hor 9 adfs amazon-web-services cognito

我有一个配置了SAML身份提供程序(ADFS)的Cognito用户池,我可以将其签名为联合用户(AD),但注销不起作用.

文档之后,我向https://my-domain.auth.us-west-2.amazoncognito.com/logout?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com提出GET请求 (使用一些公共注销uri),从我的客户端(一个AngularJS 1.x应用程序),我得到一个302与一个Location头像

https://my-domain.auth.us-west-2.amazoncognito.com/login?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com  
Run Code Online (Sandbox Code Playgroud)

(事实上​​,我看到2个请求,如上所述).

当我重新登录(通过ADFS)时,它不会提示我的AD凭据,即似乎我没有注销.

我的用户池按照此处所述进行配置(请参阅步骤7),其中选中了Enable IdP注销流程,该流程也应该将用户从ADFS注销.

有什么建议?谢谢.

General
-------
Request URL: https://my-domain.auth.us-west-2.amazoncognito.com/logout?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com  
Request Method: GET  
Status Code: 302  
Remote Address: 54.69.30.36:443  
Referrer Policy: no-referrer-when-downgrade  

Response Headers
----------------
cache-control: private  
content-length: 0  
date: Fri, 20 Apr 2018 21:31:12 GMT  
expires: Thu, 01 Jan 1970 00:00:00 UTC  
location: https://my-domain.auth.us-west-2.amazoncognito.com/login?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com  
server: Server  
set-cookie: XSRF-TOKEN=...; Path=/; Secure; HttpOnly  
set-cookie: XSRF-TOKEN=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; Secure; HttpOnly  
status: 302  
strict-transport-security: max-age=31536000 ; includeSubDomains  
x-content-type-options: nosniff  
x-frame-options: DENY  
x-xss-protection: 1; mode=block  

Request Headers
---------------
:authority: my-domain.auth.us-west-2.amazoncognito.com  
:method: GET  
:path: /logout?client_id=63...ng&logout_uri=http:%2F%2Fyahoo.com  
:scheme: https
accept: application/json, text/plain, */*  
accept-encoding: gzip, deflate, br  
accept-language: en-US,en;q=0.9  
authorization: Bearer eyJra...  
cache-control: no-cache  
origin: https://localhost:8443  
pragma: no-cache  
referer: https://localhost:8443/logout  
user-agent: Mozilla/5.0...  
Run Code Online (Sandbox Code Playgroud)

DS.*_*DS. 6

每当logout_uri参数与AWS Cognito用户池应用程序客户端设置配置中的注销URL中列出的参数不完全匹配时,就会发生此重定向。

Cognito允许使用logout_uri与login(即redirect_uriresponse_type)相同或相同的参数进行注销,以注销并将用户带回到登录屏幕。似乎每当logout_uri无效时,它都会假定重新登录流程,进行此重定向,然后报告有关缺少登录参数的错误。

至于SAML,我不知道,但猜测它不起作用,因为实际上存在错误,只是没有正确报告。

  • 是的,使用 Cognito 的行为非常可怕且违反直觉。当请求中缺少、无效或不允许的 URL“logout_uri”时,它不会告诉您。它隐式地尝试重新登录您! (2认同)

Ak *_*k S 5

/logout endpoint用户注销。它只支持 HTTPS GET。这是工作

示例请求 - 注销并重定向回客户端

它清除现有会话并重定向回客户端。这两个参数都是必需的。

GET https://<YOUR DOMAIN NAME>/logout?
client_id=xxxxxxxxxxxx&
logout_uri=com.myclientapp://myclient/logout
Run Code Online (Sandbox Code Playgroud)

还要确保注销 URL 也与 AWS Cognito APP中的注销 URL 相同

有关更多信息,请参阅AWS LOGOUT Endpoint