Kentor MVC Logout不会调用logout url

时间:2017-06-09 08:49:26

标签: asp.net-mvc saml-2.0 kentor-authservices

我对此功能有疑问。 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并发送它似乎是一个内部问题?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在发出注销请求之前,需要满足许多要求:

  1. 您需要拥有http://kentor.se/AuthServices/LogoutNameIdentifier声明,其发行人必须与您尝试退出的IDP相匹配。
  2. 您需要http://kentor.se/AuthServices/SessionIndex声明。
  3. 您的AuthServices IDP配置需要logoutUrl(我看到您已指定此内容,但可能更容易让AuthServices从元数据中读取它)
  4. 您已指定ServiceCertificate使用签名或两者使用(即不仅仅是加密)
  5. 您的AuthServices IDP配置有DisableOutboundLogoutRequests = false(这是默认值)
  6. 如果您在登录期间发生了某些声明转换,或者您没有保留原始的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