すべてのOpenID Connectプロバイダは、jwks_uri
プロパティを含むディスカバリドキュメントを発行します。 jwks_uri
から返されたデータは、2つの異なる形式をとっているようです。 1つのフォームには、x5c
とx5t
というフィールドがあります。この例は次のようになります。C#でOpenID Connect jwks_uriメタデータを正しく消費する方法は?
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "C61F8F2524D080D0DB0A508747A94C2161DEDAC8",
"x5t": "xh-PJSTQgNDbClCHR6lMIWHe2sg", <------ HERE
"e": "AQAB",
"n": "lueb...",
"x5c": [
"MIIC/..." <------ HERE
],
"alg": "RS256"
}
]
}
私が見る他のバージョンでは、x5cとx5tプロパティを省略したがe
とn
が含まれています。この例は次のとおりです。私はかなりの差があり、時にはx5c/x5t
組み合わせが使用されるが、他の回されている理由、それは単にe/n
が何であるかを理解していない
{
"keys": [
{
"kty": "RSA",
"alg": "RS256",
"use": "sig",
"kid": "cb11e2f233aee0329a5344570349cddb6b8ff252",
"n": "sJ46h...", <------ HERE
"e": "AQAB" <------ HERE
}
]
}
。さらに、C#のようなクラスを使用する場合Microsoft.IdentityModel.Tokens.TokenValidationParameters
IssuerSigningKey
を供給するために与えられた情報をどのように使用するのですか?このクラスの使用例は、私はので、私はアクセストークンを検証することができTokenValidationParameter
にIssuerSigningKey
を提供するために、それらを使用しない方法を二つの異なるJWKメタデータ形式を考えると
new TokenValidationParameters
{
ValidateAudience = true,
ValidateIssuer = true,
...,
IssuerSigningKey = new X509SecurityKey(???) or new JsonWebKey(???) //How to create this based on x5c/x5t and also how to create this based on e and n ?
}
のですか?