如何将 IDP 发起的单点注销连接到 运行 自定义代码?

How do I hook into IDP initiated single logout to run custom code?

我正在使用 Sustainsys。saml2.httpmodule。我想 运行 一些代码来记录从 IDP 发起的单次注销中的注销。在 IDP 启动单次注销后,用户似乎也没有注销(IsAuthenticated 仍然是真的),即使 https://stubidp.sustainsys.com/Logout 给我一个成功的结果。

我似乎找不到任何其他人需要相同的功能或遇到相同的问题。我的 Sustainsys 配置如下。

<sustainsys.saml2 entityId="http://localhost:53758/Saml2"
                returnUrl="http://localhost:53758/Common/Pages/Saml2Login.aspx"
                authenticateRequestSigningBehavior="IfIdpWantAuthnRequestsSigned"
                validateCertificates="false"
                publicOrigin ="http://localhost:53758/">
    <nameIdPolicy allowCreate="false" format="Unspecified"/>
    <metadata cacheDuration="PT1440M" wantAssertionsSigned="true">
        <organization name="ab" displayName="ab" url="https://www.example.com/" language="en" />
        <contactPerson type="Technical" email="a@b.com" />
        <requestedAttributes>
            <add friendlyName ="Some Name" name="urn:someName" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="true" />
        </requestedAttributes>
    </metadata>
    <identityProviders>
    <add entityId="https://stubidp.sustainsys.com/Metadata"
        signOnUrl="https://stubidp.sustainsys.com"
        logoutUrl="https://stubidp.sustainsys.com/Logout"
        allowUnsolicitedAuthnResponse="true"
        binding="HttpRedirect"
        wantAuthnRequestsSigned="true">
        <signingCertificate storeName="CertificateAuthority" storeLocation="CurrentUser"
                        findValue="cdf7090a433561a843b51198b0ba6456" x509FindType="FindBySerialNumber" />
    </add>
    </identityProviders>
    <serviceCertificates>
        <add storeName="CertificateAuthority" storeLocation="CurrentUser" findValue="2cfe21cb930c19a341e9e30a07a3c123" x509FindType="FindBySerialNumber" />
    </serviceCertificates>
</sustainsys.saml2>

您可以使用 LogoutCommandResultCreated 通知。当重定向到 Idp 即将发生时以及从 Idp 收到响应后都会调用它。