「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る(JWT)>JWT]] --[[JWS]] --[[JWE]] * 目次 [#d18835c6] #contents *概要 [#jd402cd5] [[JWS]]や[[JWE]]などで利用する公開鍵(JWK : JSON Web Key)を JSON 形式で表現するための仕様 -OpenID Connect Discovery をサポートしている IdP は公開鍵を JWK Set 形式で公開していることが多い。 -[[FIDO]]2.0 の [[Web Authentication API]] が生成する公開鍵なども、JWK で表現されている。 { "alg": "RS256", "e": "AQAB", "ext": false, "kty": "RSA", "n": "・・・" } *詳細 [#p1b5801b] *自作ライブラリ [#w4acaf5a] **署名・暗号化アルゴリズム [#p4042a8b] [[ココ>.NETの署名・暗号化アルゴリズム]]の署名・暗号化アルゴリズムを使用すると良い。 **X.509証明書 ---> JWK [#r7acde95] X.509証明書 ---> RSAParameters <---> JWK変換を考える。 ***.NET [#o2fe6141] .NETでは以下のようにできる模様。 -X509Certificate2 クラス (System.Security.Cryptography.X509Certificates)~ https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.x509certificates.x509certificate2.aspx --RSACertificateExtensions.GetRSAPublicKey メソッド~ https://msdn.microsoft.com/ja-https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.x509certificates.rsacertificateextensions.getrsapublickey.aspx -RSACryptoServiceProvider クラス (System.Security.Cryptography)~ https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.rsacryptoserviceprovider.aspx --.ExportParameters Method~ https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.rsacryptoserviceprovider.exportparameters.aspx --.ImportParameters Method~ https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.rsacryptoserviceprovider.importparameters.aspx -RSAParameters 構造体~ https://msdn.microsoft.com/ja-jp/library/system.security.cryptography.rsaparameters.aspx -c# - Porting X509Certificate and CryptoConfig from .Net 4.5 to .Net Core - Stack Overflow~ https://stackoverflow.com/questions/43360576/porting-x509certificate-and-cryptoconfig-from-net-4-5-to-net-core ***他の言語 [#c5923194] 同じようなことは他の言語でも調査されている。 -How to parse a X.509 certificate and extract its public key | Connect2id~ https://connect2id.com/products/nimbus-jose-jwt/examples/parse-x509-certificate-extract-keys -RubyでGoogleのJWKにあるmodulusとexponentからOpenSSLを使って公開鍵を生成する - Qiita~ https://qiita.com/trysmr/items/e8d4225ff6a603e9e21a *参考 [#d88bad0f] -RFC 7517 - JSON Web Key (JWK)~ https://tools.ietf.org/html/rfc7517 -WebCrypto APIでJSON Web Tokenの検証を試してみる - Qiita~ http://qiita.com/tomoyukilabs/items/faa66805a440f4b30cfb --Google OpenID Connectの場合、署名を検証するために必要となるJWKがWebサイト上で公開されている。 --一定時間ごとに更新されるため、署名の検証時にはその都度JWKの内容をWebサイトから取得する。~ https://www.googleapis.com/oauth2/v2/certs -OAuth Revocation と JWK を翻訳しました - OAuth.jp~ http://oauth.jp/blog/2016/07/01/jwk-and-oauth-revocation-translated/ --JSON Web Key (JWK)~ http://openid-foundation-japan.github.io/rfc7517.ja.html --JSON Web Key (JWK) Thumbprint~ http://openid-foundation-japan.github.io/rfc7638.ja.html ---- Tags: [[:認証基盤]], [[:クレームベース認証]], [[:暗号化]]