Azure 示例 - WebApp-WSFederation-DotNet

Azure samples - WebApp-WSFederation-DotNet

可以在此处找到示例应用 --> https://github.com/Azure-Samples/active-directory-dotnet-webapp-wsfederation

应用程序正在使用 Microsoft.Owin,这正是我所期待的:

  1. 用户导航到您的应用程序。

  2. 您的应用程序重定向匿名用户以在 Azure AD 进行身份验证,发送 WS-Federation 协议请求,指示领域参数的应用程序 URI。 URI 应与单点登录设置中显示的 App ID URI 匹配。

  3. 请求被发送到您的租户 WS-Federation 端点,例如:https://login.windows.net/solexpaad.onmicrosoft.com/wsfed

  4. 用户将看到一个登录页面,除非他或她已经拥有 Azure AD 租户的有效 cookie。

  5. 经过身份验证后,SAML 令牌将在 HTTP POST 中返回到应用程序 URL 并带有 WS-Federation 响应。要使用的 URL 在单点登录设置中指定为回复 URL。

  6. 应用程序处理此响应,验证令牌是否由受信任的颁发者 (Azure AD) 签名,并确认令牌仍然有效。

我的问题:

身份验证后,通过 HTTP POST 返回 SAML 令牌。如何查看 SAML 响应?目前,当我在 POST 之后查看 HttpContext 时,里面什么也没有。

感谢您的帮助。

在 App_Start/Startup.Auth.cs 中,您应该可以访问令牌。 我添加了 SecurityTokenReceived Func:

app.UseWsFederationAuthentication(
    new WsFederationAuthenticationOptions
    {
        Wtrealm = realm,
        MetadataAddress = metadata,
        Notifications = new WsFederationAuthenticationNotifications
            {
                AuthenticationFailed = context =>
                {
                    context.HandleResponse();
                    context.Response.Redirect("Home/Error?message=" + context.Exception.Message);
                    return Task.FromResult(0);
                },
                SecurityTokenReceived = context =>
                {
                    // Get the token
                    var token = context.ProtocolMessage.GetToken();
                    return Task.FromResult(0);
                }
            }
        });