Comment puis-je valider mon token d'accès personnalisé OAuth2 du côté du serveur
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
bool isvalidUser = AuthenticateUser(context.UserName, context.Password);// validate my user&password
if (!isvalidUser)
{
context.Rejected();
return;
}
// create identity
var id = new ClaimsIdentity(context.Options.AuthenticationType);
id.AddClaim(new Claim("sub", context.UserName));
id.AddClaim(new Claim("role", "user"));
// create metadata to pass on to refresh token provider
var props = new AuthenticationProperties(new Dictionary<string, string>
{
{ "as:client_id", context.ClientId }
});
var ticket = new AuthenticationTicket(id, props);
context.Validated(ticket);
}
}
temps D'ouverture de session j'utilise ce SimpleAuthorizationServerProvider (dans L'Api Web) que je peux obtenir et envoyer le token d'accès au client. Une fois de plus, L'utilisateur doit se connecter pour accéder à D'autres Pages, Comment puis-je valider mon token d'accès personnalisé Oauth2 côté serveur (dans L'Api Web)
Du côté Client, je suis de la génération du jeton comme ceci
private static TokenResponse GetToken()
{
var client = new OAuth2Client(new Uri("http://localhost:1142/token"), "client1", "secret");
var response = client.RequestResourceOwnerPasswordAsync(uid, pwd).Result;
Console.WriteLine(response.AccessToken);
return response;
}
et appeler une api web particulière après authentification comme ceci
private static void CallProfile(string token)
{
var client = new HttpClient();
client.SetBearerToken(token);
var response = client.GetStringAsync(new Uri("http://localhost:1142/api/Profile?id=1")).Result;
}
1 réponses
en fait, OWIN s'occupe de presque tout pour vous. Si vous utilisez ASP.NET API V2 Server to receives requests. Vous avez juste à passer votre token dans vos requêtes http dans le bon format.
1. Envoyer une requête http
Il y a 2 façons de passer votre jeton :
- ajouter votre token dans les en-têtes http.
- ajouter votre token dans L'Url (ASP.NET Api Web: Comment passer un token d'accès (oAuth 2.0) en utilisant L'URL paramètre?)
2. Authentifiez votre demande
Vous pouvez utiliser (ClaimsPrincipal)Thread.CurrentPrincipal.Identity.IsAuthenticated
pour vérifier si le requested token
valide
3. Autoriser votre demande
Vous pouvez utiliser [Authorize]
l'attribut ou Vous pouvez écrire votre propre AuthorizeAttribute
si vous implémentez votre propre attribut, vous pouvez faire des choses plus intéressantes: vous connecter à la base de données pour faire des autorisations complexes.
je pense que C'est un bon document pour commencer avec OAUTH2 dans ASP.NET Api Web: http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/