示例应用可在此处找到 - > https://github.com/Azure-Samples/active-directory-dotnet-webapp-wsfederation
该应用程序正在使用Microsoft.Owin,这正是我所期待的:
用户导航到您的应用程序。
您的应用程序重定向匿名用户以在Azure AD进行身份验证,发送WS-Federation协议请求,该请求指示领域参数的应用程序URI。 URI应与单点登录设置中显示的App ID URI匹配。
请求将发送到您的租户WS-Federation端点,例如:https://login.windows.net/solexpaad.onmicrosoft.com/wsfed
向用户显示登录页面,除非他或她已拥有Azure AD租户的有效cookie。
进行身份验证时,会在HTTP POST中使用WS-Federation响应将SAML令牌返回到应用程序URL。要使用的URL在单点登录设置中指定为回复URL。
应用程序处理此响应,验证令牌是否由受信任的颁发者(Azure AD)签名,并确认该令牌仍然有效。
我的问题:
在身份验证之后,通过HTTP POST返回SAML令牌。如何查看SAML响应?目前,当我在POST后查看HttpContext时,其中没有任何内容。
感谢您的帮助。
答案 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);
}
}
});