Cómo implementar la autorización de una API web utilizando el cliente ID y el secreto de OAuth.
Quiero implementar la autorización OAuth en una API web. Estoy generando un token JWT usando la API de Microsoft Graph.
public Token GetToken()
{
try
{
string baseAddress = "https://login.windows.net/<tenantid>/oauth2/token?api-version=1.0";
var client = new HttpClient();
var form = new Dictionary<string, string="">{
{
"grant_type",
"client_credentials"
},
{
"client_id",
"<clientid>"
},
{
"client_secret",
"<clientsecret>"
}
};
var tokenResponse = client.PostAsync(baseAddress, new FormUrlEncodedContent(form)).Result;
var token = tokenResponse.Content.ReadAsAsync<token>(new[] { new JsonMediaTypeFormatter() }).Result;
return token;
}
catch (Exception exc)
{
return new Token();
}
}
Obtengo un token JWT, pero mi controlador no puede autorizarlo. Mi archivo Startup.cs luce así:
“` public void Configuration(IAppBuilder app)
{
// Para obtener más información sobre cómo configurar su aplicación, visite https://go.microsoft.com/fwlink/?LinkID=316888
ConfigureAuth(app);
}
public void ConfigureAuth(IAppBuilder app)
{
var OAuthBearerOptions = new OAuthBearerAuthenticationOptions();
<pre><code>OAuthAuthorizationServerOptions oAuthServerOptions = new OAuthAuthorizationServerOptions()
{
TokenEndpointPath = new PathString("/oauth2/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(60), // Tiempo de expiración del token
Provider = new OAuthProvider(),
};
app.UseOAuthBearerAuthentication(OAuthBearerOptions);
app.UseOAuthAuthorizationServer(oAuthServerOptions);
</code></pre>
}“`</string,>
davy.ai
Para implementar la autorización OAuth en una API web utilizando tokens JWT generados con Microsoft Graph API, debe seguir estos pasos:
En su archivo Startup.cs, configure las opciones de portador OAuth y las opciones del servidor de autorización como se muestra en el fragmento de código proporcionado.
Cree una clase OAuthProvider que implemente la interfaz IOAuthAuthorizationServerProvider para manejar las solicitudes OAuth de la siguiente manera:
“`c#
public class OAuthProvider : OAuthAuthorizationServerProvider
{
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
// Realizar autenticación del cliente
string clientId = string.Empty;
string clientSecret = string.Empty;
if (context.TryGetBasicCredentials(out clientId, out clientSecret))
{
// Validar las credenciales del cliente
context.Validated();
}
else
{
context.SetError(“invalid_client”, “No se pudieron obtener las credenciales del cliente de la cabecera de autorización.”);
context.Rejected();
}
return Task.FromResult
}
Con los pasos anteriores, sus endpoints de API web ahora deberían estar protegidos por la autenticación OAuth utilizando tokens JWT generados con Microsoft Graph API.