2016-02-24 17 views
6

Azure Active Directoryによる認証にADALライブラリを使用するWebアプリケーションがあります。C#RESTサービスのADAL JWTトークンの検証

このWebアプリケーションは、ADALトークン文字列をパラメータとして渡してC#RESTサービスを呼び出します。私のRESTサービスでは、このトークンを検証する必要があります。トークンが有効な場合のみ、サービスは操作を実行します。

私は多くを検索しましたが、休憩サービスでJWTトークンを検証する方法が見つかりませんでした。あなたたちはこれで私を助けてくれますか?

1. OWINミドルウェアあなたのためのトークンの検証を処理します

使用ミドルウェア:

答えて

5

は、2つのオプションがあります。一般的なケースはOWINミドルウェアで、これはあなたのためにすべての魔法を実行します。これは、低レベルのトークン検証ではなく、APIのビジネスロジックにコードを集中させることができるため、通常は最良のアプローチです。 OWINを使用するサンプルREST APIの場合、これらの二つのサンプルをチェックアウト:

2.マニュアルJWTの検証

あなたはJSONウェブトークンを使用することができます手動JWTトークンの検証を行うASP.NET用ハンドラ([OK]を、ので、それは完全に手動ではないが、それを手動で起動されます。)サンプルは、このためにもあります:

  • https://github.com/Azure-Samples/active-directory-dotnet-webapi-manual-jwt-validation(実際のJWT検証がGlobal.asax.csで発生し、このようなものになります。

    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はこの検証を自動的に実行しますか? – r590

+0

@ r590 yes。このメソッドを使用すると、すべてが設定されます –

関連する問題