Azure示例 - WebApp-WSFederation-DotNet

时间:2016-01-20 19:35:07

标签: azure single-sign-on azure-active-directory

示例应用可在此处找到 - > 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. 进行身份验证时,会在HTTP POST中使用WS-Federation响应将SAML令牌返回到应用程序URL。要使用的URL在单点登录设置中指定为回复URL。

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

  7. 我的问题:

    在身份验证之后,通过HTTP POST返回SAML令牌。如何查看SAML响应?目前,当我在POST后查看HttpContext时,其中没有任何内容。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

在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);
                }
            }
        });