2016-02-24 20 views
6

Ho un'applicazione Web che utilizza la libreria ADAL per l'autenticazione tramite Azure Active Directory.Convalida del token ADAL JWT nel servizio REST C#

Questa applicazione Web effettua una chiamata a un servizio REST C# passando la stringa token ADAL come parametro. Nel mio servizio REST, voglio convalidare questo token. Se il token è valido solo allora il servizio eseguirà l'operazione.

Ho cercato molto ma non ho trovato un modo per convalidare il token JWT nel mio servizio di riposo. Ragazzi, per favore potete aiutarmi su questo?

risposta

5

si hanno due opzioni:

1. Utilizzare OWIN middleware

Usa middleware che consente di gestire la convalida del token per voi. Un caso comune sarà il middleware OWIN, che fa tutta la magia per te. Di solito, questo è l'approccio migliore, in quanto consente di focalizzare il codice sulla logica di business per la propria API, non sulla convalida del token di basso livello. Per un API REST esempio che utilizza OWIN, prova anche questi due campioni:

2. Manuale di convalida JWT

È possibile utilizzare il JSON Web Token Gestore per ASP.NET per eseguire la convalida del token JWT manuale. (Ok, quindi non è interamente manuale, ma viene richiamato manualmente.) C'è anche un esempio per questo:

  • https://github.com/Azure-Samples/active-directory-dotnet-webapi-manual-jwt-validation (la convalida effettiva JWT accade in Global.asax.cs e sembra qualcosa di simile:

    JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler(); 
    
    TokenValidationParameters validationParameters = new TokenValidationParameters 
    { 
        ValidAudience = audience, 
        ValidIssuer = issuer, 
        IssuerSigningTokens = signingTokens, 
        CertificateValidator = X509CertificateValidator.None 
    }; 
    
    try 
    { 
        // Validate token. 
        SecurityToken validatedToken = new JwtSecurityToken(); 
        ClaimsPrincipal claimsPrincipal = tokenHandler.ValidateToken(jwtToken, validationParameters, out validatedToken); 
    
        // Do other validation things, like making claims available to controller... 
    } 
    catch (SecurityTokenValidationException) 
    { 
        // Token validation failed 
        HttpResponseMessage response = BuildResponseErrorMessage(HttpStatusCode.Unauthorized); 
        return response; 
    } 
    
+0

App.UseWindowsAzureActiveDirectoryBearerAuthentication esegue questa convalida automaticamente? – r590

+0

@ r590 sì. Se si utilizza tale metodo, tutto questo verrà configurato per l'utente –

Problemi correlati