2016-01-20 50 views
1

的示例应用程序可以在这里找到 - >https://github.com/Azure-Samples/active-directory-dotnet-webapp-wsfederation天青样品 - Web应用程序-WSFederation-DOTNET的

应用程序使用Microsoft.Owin,这就是我期待:

  1. 用户浏览到您的应用程序。

  2. 你的应用重定向匿名用户在天青AD进行身份验证,发送指示对realm参数的应用的URI一个WS联盟协议请求。该URI应该与单点登录设置中显示的App ID URI匹配。

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

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

  5. 当认证时,一个SAML令牌在HTTP POST为与WS联盟响应该应用程序的URL返回。要使用的URL在单点登录设置中指定为回复URL。

  6. 的应用处理此响应,验证所述令牌是否由可信发行者(天青AD)签字,并确认该标记仍然是有效的。

我的问题:

一个SAML令牌通过HTTP POST返回的认证后。我如何查看SAML响应?目前,当我在POST后查看HttpContext时,没有任何内容。

感谢您的任何帮助。

回答

2

在App_Start/Startup.Auth.cs,你应该能够获得访问令牌。 我已添加SecurityTokenReceived功能:

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); 
       } 
      } 
     }); 
+0

Thanks !!我在ProtocolMessage中找到它。我假设RequestSecurityTokenResponse是有效的SAML? – Villain

+0

@Villain,看看解释:https://access.redhat.com/documentation/en-US/Fuse_ESB/4.4.1/html/Web_Services_Security_Guide/files/WsTrust-Demo-Messages.html – Thomas

+0

感谢链接 – Villain