私はAzure Active Directoryで(クッキーではなく)トークン認証を使用しています。この記事に基づいて.NET CoreとAzure Active Directoryの統合
:https://www.itunity.com/article/angular-2-openid-connect-azure-active-directory-3093
私はそれは、クライアント側で動作させることができました。
public validateSignature(token): Observable<boolean> {
/* Retrieve from federated metadata endpoint.
In this sample, the document was downloaded locally */
return this.httpService.get("metadata/metadata.xml")
.map((res: Response) => {
let dom = (new DOMParser()).parseFromString(res.text(), "text/xml");
let json = xml2json(dom, "");
let cert = "-----BEGIN CERTIFICATE-----" +
JSON.parse(json).EntityDescriptor[0]["ds:Signature"]
["KeyInfo"]["X509Data"]["X509Certificate"] +
"-----END CERTIFICATE-----";
let key = KEYUTIL.getKey(cert);
return KJUR.jws.JWS.verifyJWT(token, key, { alg: ['RS256'] });
})
}
私は、.NETのコア1.0.3で再実装上記の方法にしようとしていました。この記事に基づいて
:how to sign and verify signature with net and a certificate
次の行では、.NETのコア上でコンパイルされません。
RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PublicKey.Key;
私が証明書に基づいてトークンを検証するための正しい方法は何かわかりません.NETコアこのQAによる
期待通りに機能しました。ありがとう! –
@DerekLiang問題に役立つ場合は、同じ問題を抱えているコミュニティが便利な投稿を簡単に認識できるように、回答としてマークしてください:) –
ValidateIssuerSigningKeyがtrueに設定されていますが、署名キーはありません。 IssuerSigningKeyプロパティにSymmetricSecurityKey値を追加すると、何の値も与えられません。私はそれが私が持っている秘密鍵だけを検証すると仮定していました。 – RyanOC