2016-10-24 7 views
0

OAuth Authorization Code Grantを使用してアクセストークンを取得するためにADFSを呼び出しています。 は、私は私がaccess_tokenは値をコピーし、それは完全に解読https://jwt.io ではなく、無効な署名とそれを貼り付けています、今トークンバックフォーム署名証明書を使用してC#JWTパッケージを使用してJWTをデコードする方法

{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dC...." 
"token_type":"bearer", 
"expires":3600} 

でのアクセスを取得しています。

Jwt.ioのヘッダが返されます。

{ 
"typ": "JWT", 
"alg": "RS256", 
"x5t": "eQKi04zWoOV3eLmNNBrI2_rbqSY" 
} 

私がどのように見えるPEMトークン署名証明書があります。

-----BEGIN CERTIFICATE----- 
MIIG0zCCBbugAwIBAgIKUJvNQgAAAAANxTA... 
BgNVBAcTBEtlbnQxJjAkBgNVBAoTHVR... 
-----END CERTIFICATE----- 

は今、どのようにシステムを使用して証明書とトークンを検証するために。 IdentityModel.Tokens.Jwtまたは他のメソッドを使用します。

親切に、助けてください。

答えて

0

多くの研究の後、私は答えを見つけました。他の人に役立つように、ここに投稿してください。

string token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1.." 
    var tokenHandler = new JwtSecurityTokenHandler(); 
//Read Token for Getting the User Details 
    var parsedJwt = tokenHandler.ReadToken(token) as JwtSecurityToken; 

//Create A Certificate Object that will read the .CER/.PEM/.CRT file as String 
X509Certificate2 clientCertificate = new X509Certificate2(Encoding.UTF8.GetBytes(CertficationString)); 

var certToken = new X509SecurityToken(clientCertificate); 

var validationParameters = new TokenValidationParameters() 
    { 
     IssuerSigningToken = certToken, 
     ValidAudience = audience, 
     ValidIssuer = issuer, 
     ValidateLifetime = true, 
     ValidateAudience = true, 
     ValidateIssuer = true, 
     ValidateIssuerSigningKey = true 
    }; 


    try 
    { 
     SecurityToken validatedToken; 
     var principal = tokenHandler.ValidateToken(token, validationParameters, out validatedToken); 

    } 
    catch (Exception err) 
    { 

     Console.WriteLine("{0}\n {1}", err.Message, err.StackTrace); 
    } 
関連する問題