Introspection OAuth avec dotNet
Introduction
Ce guide explique comment faire fonctionner une API web dotNet core avec IBM Security Verify pour la validation des jetons d'accès OAuth présentés.
Instructions
- Créez une nouvelle API web dotnet core (c'est-à-dire dotnet new webapi ).
- Ajouter la [bibliothèque IdentityModel.AspNetCore.OAuth2Introspection]
(https://www.nuget.org/packages/IdentityModel.AspNetCore.OAuth2Introspection/). - Dans Startups.cs, ajoutez ce qui suit :
services.AddAuthentication(OAuth2IntrospectionDefaults.AuthenticationScheme)
.AddOAuth2Introspection(options =>
{
options.ClientId = "xxx-xxxx-xxxx-xxxxxx";
options.ClientSecret = "xxxxxxx";
options.IntrospectionEndpoint = "https://{{tenant_url}}/v1.0/endpoint/default/introspect"
});
- Si vous souhaitez utiliser des scopes dans votre API. Définissez différentes politiques et affectez-les aux champs d'application que vous attribuez au client API dans ISV. Voici un exemple de politique nommée Read qui est attribuée si le bearer token a une portée API:Read.
services.AddAuthorization(options =>
{
options.AddPolicy("Read", policy => policy.RequireClaim("scope", "API:Read"));
});
- Dans la méthode Configure(), ajoutez app.UseAuthentication( ) ; et app.UseAuthorization( ); :
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseMiddleware<MyMiddleware>();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
- Sur chaque terminal à protéger, ajoutez la balise [Autoriser] et spécifiez les politiques définies à l'étape 4. Par exemple, si le token a la portée API:Read, il a la politique Read, ce qui signifie qu'il est autorisé à utiliser le point de terminaison défini ci-dessous.
[HttpGet]
[Authorize(Policy = "Read")]
public ActionResult Get()
{
return Ok();
}
Updated about 1 month ago