How do I create a ClaimsIdentity object for Asp.NET MVC 5?
asp.net-mvc-5, authentication, claims-based-identity, katana, ravendb
Solution
Perhaps the following link can help:
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, "Brock"));
claims.Add(new Claim(ClaimTypes.Email, "brockallen@gmail.com"));
var id = new ClaimsIdentity(claims,DefaultAuthenticationTypes.ApplicationCookie);
var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
authenticationManager.SignIn(id);
Problem
I am working in a .NET MVC 5 application. I do not want to use Entity Framework. I want to authenticate to a RavenDB database. It looks to me that I want to replace the `UserManager` that comes with the Account Controller. I think I can rewrite all the UserManager functions to work with my database, except I don't understand the `ClaimsIdentity` object. In the `SignInAsync` method, there is a call to `UserManager.CreateIdentityAsync(...)`. I know it returns a `ClaimsIdentity` object. What I don't know is how to create a ClaimsIdentity object on my own. I see that it has 4 properties `Actor`, `BootstrapContext`, `Claims` and `Label`. I don't know what these properties are used for, and I don't know how to properly generate them. I assume generating them correctly is important since it is how the authentication cookie is made. I looked at the explanation of the ClaimsIdentity object here, but that didn't really help me understand. If I could see the code for `CreateIdentityAsync()`, that would probably help. If I'm going about this all wrong, please let me know. Otherwise, if someone could point me toward how to generate the ClaimsIdentity object, that would be helpful. ``` ClaimsIdentity identity = new ClaimsIdentity { Actor = ????, BootstrapContext = ?????, Claims = ?????, Label = ????? } ```