У нас есть MVC 5 веб-приложение, которое использует аутентификацию ADFS 4. Я пытаюсь найти лучшее место, где я могу добавить дополнительные утверждения в ClaimsPrincipal после завершения аутентификации.
Есть ли какие-либо события, к которым я могу получить доступ, например, OnAuthenticated? Как получить доступ к такого рода событиям?
Это то, что я намереваюсь использовать, как только я смогу получить доступ к событию:
IOwinContext context = Request.GetOwinContext();
if (appRoles != null)
{
ClaimsIdentity claimsIdentity = new ClaimsIdentity(System.Web.HttpContext.Current.User.Identity);
foreach (var role in appRoles)
{
claimsIdentity.AddClaim(new Claim("http://schemas.microsoft.com/ws/2008/06/identity/claims/role", role));
}
context.Authentication.AuthenticationResponseGrant = new AuthenticationResponseGrant
(new ClaimsPrincipal(claimsIdentity), new AuthenticationProperties { IsPersistent = true });
}
РЕДАКТИРОВАТЬ: Это то, что мой App_Data\Startup.Auth.cs
файл выглядит так:
public partial class Startup
{
private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieManager = new SystemWebCookieManager()
});
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = adfsMetadata
});
}
}