Azure 示例 - WebApp-WSFederation-DotNet
Azure samples - WebApp-WSFederation-DotNet
可以在此处找到示例应用 --> 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。
经过身份验证后,SAML 令牌将在 HTTP POST 中返回到应用程序 URL 并带有 WS-Federation 响应。要使用的 URL 在单点登录设置中指定为回复 URL。
应用程序处理此响应,验证令牌是否由受信任的颁发者 (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);
}
}
});
可以在此处找到示例应用 --> 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。
经过身份验证后,SAML 令牌将在 HTTP POST 中返回到应用程序 URL 并带有 WS-Federation 响应。要使用的 URL 在单点登录设置中指定为回复 URL。
应用程序处理此响应,验证令牌是否由受信任的颁发者 (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);
}
}
});