我对此功能有疑问。
SignIn动作适用于ADFS并返回到AuthServices / Acs
但是Logout操作不会调用ADFS并直接重定向到returnUrl参数(使用fiddler检查它)。
我正在调用此链接:/AuthServices/Logout?ReturnUrl=~/&Status=LoggedOut
web.config设置如下:
<kentor.authServices entityId="https://localhost:2181/AuthServices" returnUrl="https://localhost:2181/">
<identityProviders>
<add
entityId="https://ADFS DOMAIN/adfs/services/trust"
signOnUrl="https://ADFS DOMAIN/adfs/ls"
logoutUrl="https://ADFS DOMAIN/adfs/ls/?wa=wsignout1.0"
binding="HttpPost"
allowUnsolicitedAuthnResponse="true"
metadataLocation="https://ADFS DOMAIN/FederationMetadata/2007-06/FederationMetadata.xml"
wantAuthnRequestsSigned="true">
<signingCertificate fileName="~/App_Data/*****.cer" />
</add>
</identityProviders>
</kentor.authServices>
如果我在另一个标签页上启动https://ADFS DOMAIN/adfs/ls/?wa=wsignout1.0
,它正在运行,我会从我的网站返回登录页面。
因此,检索logouturl并发送它似乎是一个内部问题?
感谢您的帮助。
答案 0 :(得分:0)
在发出注销请求之前,需要满足许多要求:
http://kentor.se/AuthServices/LogoutNameIdentifier
声明,其发行人必须与您尝试退出的IDP相匹配。http://kentor.se/AuthServices/SessionIndex
声明。logoutUrl
(我看到您已指定此内容,但可能更容易让AuthServices从元数据中读取它)ServiceCertificate
使用签名或两者使用(即不仅仅是加密)DisableOutboundLogoutRequests
=
false(这是默认值)如果您在登录期间发生了某些声明转换,或者您没有保留原始的ClaimsIdentity,则最有可能发生错误索赔(前两点)。另请参阅有关ClaimsAuthenticationManager的文档,例如: https://github.com/KentorIT/authservices/blob/master/doc/ClaimsAuthenticationManager.md
您可以打开日志记录并查看哪些点失败: https://github.com/KentorIT/authservices/blob/v0.21.2/Kentor.AuthServices/WebSSO/LogOutCommand.cs#L155-L170