Ich versuche OWIN Bearer Token-Autorisierung zu implementieren, und basiert auf this article. Es gibt jedoch noch eine weitere Information, die ich in einem Bearer-Token brauche, von der ich nicht weiß, wie ich sie implementieren soll.Hinzufügen zusätzlicher Logik zur Bearer-Autorisierung
In meiner Anwendung muss ich aus dem Bearer-Token Benutzerinformationen ableiten (sagen Benutzer-ID). Dies ist wichtig, weil ich nicht möchte, dass ein autorisierter Benutzer als ein anderer Benutzer agieren kann. Ist das machbar? Ist es überhaupt der richtige Ansatz? Wenn die Benutzer-ID eine GUID ist, wäre dies einfach. Es ist in diesem Fall eine ganze Zahl. Ein autorisierter Benutzer kann sich möglicherweise nur durch Erraten/Brute Force als ein anderer ausgeben, was nicht akzeptabel ist.
an diesem Code suchen:
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
}
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
using (AuthRepository _repo = new AuthRepository())
{
IdentityUser user = await _repo.FindUser(context.UserName, context.Password);
if (user == null)
{
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}
}
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim("sub", context.UserName));
identity.AddClaim(new Claim("role", "user"));
context.Validated(identity);
}
}
Ich würde denken, dass es möglich ist, die Autorisierung/Authentifizierung außer Kraft zu setzen aufzunehmen, was ich brauche?
Sie können die Verwendung nach dem bekommen Benutzer-ID von einem Benutzer http://stackoverflow.com/a/19506296/299327. –