misc
Ws-Fed (Web Services Federation)
WS-Fed
Ws-Fed is an identity federation specification.
Dot.net core provides a framework for quickly adding authentication mechnisms to a MVC project.
Services.AddAuthentication(options =>{ options.defaultScheme = "cookie";
options.DefaultChallengeScheme = "oidc";
}).AddCookie("cookie","options => ...}).AddWsFederation("oidc",options => Options.MetadataAddress = "FederationMetadata.xml";
options.Wtrealm = "Realm"
options.Events.OnTicketReceived += OnTicketReceived;
Options.Events.OnSecurityTokenValidated += OnSecurityTokenValidated;});
servicec#s.AddAuthorization(options => options.AddPolicy("WebAPI", policy => policy.RequireClaim("APIAccess", "Sync")));
You can add custom events etc in the event handers
private Task OnSecurityTokenValidated(SecurityTokenValidatedContext arg)
{
// var xx = arg.Properties.RedirectUri;
// if (String.IsNullOrEmpty(arg.Properties.RedirectUri))
// arg.Properties.RedirectUri = "/";
return Task.FromResult(0);
}
private async Task OnTicketReceived(TicketReceivedContext arg)
{
var groups = arg.Principal.Claims.Where(c => c.Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid").ToList();
//foreach(var g in groups)
//{
// Console.WriteLine(g.Value);
//}
//HttpContext.Session.SetString(SessionKeyName, "Groups");
//HttpContext.Session.SetInt32(SessionKeyAge, 773);
//todo do some checking. compare e-mail to administrators in DB
var identity = arg.Principal.Identities.First();
identity.AddClaim(new Claim("isAdmin", "true"));
}
Add to the controller code
[Authorize(AuthenticationSchemes = "oidc")]