我對Azure Active Directory使用了令牌認證(而不是cookie)。.NET核心和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核心。
它按預期工作。謝謝! –
@DerekLiang如果問題有幫助,請將其標記爲答案,以便具有相同問題的社區可以輕鬆識別有用的帖子:) –
我將ValidateIssuerSigningKey設置爲true,但沒有簽名密鑰。當我將SymmetricSecurityKey值添加到IssuerSigningKey屬性時,不管賦予什麼值,都不起作用。我假設它只會驗證我擁有的密鑰。 – RyanOC