「[[マイクロソフト系技術情報 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: [[:認証基盤]], [[:クレームベース認証]], [[:暗号化]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS