「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>JWT]] * 目次 [#u45db361] #contents *概要 [#rb87a68b] jose-jwtを使い倒す。 **特徴 [#o4d29f44] Readme.md中で、以下の様に述べられている。 -.NETと[[.NET Core]]用の最小 or ゼロ依存のアルティメット[[JWT]]実装 -jose.4.j、Nimbus-JOSE-JWT、json-jwtライブラリとの互換性を広範にテスト。 **[[比較>JWT#r4ac23c8]] [#efad17e4] ライトユーザー向けではなく、ヘビーユーザー向け。 -クロスプラットフォーム実装 -ClientではなくAuthZサイド実装用 的な。 *詳細 [#jebc97ce] **機能 [#v9a01dd1] ***[[JWS]] [#l00fa0a9] 署名・検証 ***[[JWE]] [#pd6a0dcb] 暗号化・復号化 ***ユーティリティ [#n2439696] ・・・ **依存関係 [#da102a96] 以下を使用している。 #ref(browser.png,left,nowrap,参照設定) ***[[CAPI(CSP)、CNG>.NETの署名・暗号化アルゴリズム#fde2f12c]] [#q7931d76] -実装がある。 --https://github.com/dotnet/corefx/tree/master/src/System.Security.Cryptography.Csp/src/System/Security/Cryptography --https://github.com/dotnet/corefx/tree/master/src/System.Security.Cryptography.Cng/src/System/Security/Cryptography -Linuxで動作するか不明だが、以下の[[OpenSSL>#l3af4ef0]]を使用しているため問題無いと考える。~ 恐らく内部的に(CAPI(CSP)、CNG、Managed(OpenSSL)?と)、切り替えているモノと思われる。 ***[[OpenSSL>OpenSSL#dbb192d0]] [#l3af4ef0] -上記の、AlgorithmとX509Certificateでは、更に下位にOpenSSLのNuGetライブラリを参照している。 --Algorithm~ https://github.com/dotnet/corefx/tree/master/src/System.Security.Cryptography.Algorithms/src/System/Security/Cryptography --X509Certificate~ https://github.com/dotnet/corefx/tree/master/src/System.Security.Cryptography.X509Certificates/src/System/Security/Cryptography/X509Certificates -ネイティブ実装~ ライセンスには各種Linuxディストリビューション毎のネイティブ実装のライセンスが表示されるので、~ 当該ライブラリのクロスプラットフォーム対応も完了しているものと考える。 #ref(license.png,left,nowrap,license) *参考 [#jda0c6e9] -NuGet Gallery | jose-jwt~ https://www.nuget.org/packages/jose-jwt/ -dvsekhvalnov/jose-jwt~ https://github.com/dvsekhvalnov/jose-jwt~ **サンプル・コード [#q8a19d35] ***実装 [#q3a5562c] https://github.com/OpenTouryoProject/SampleProgram/blob/master/Other/jose_jwt_Sample/jose_jwt_Sample/Program.cs ***結果 [#n5e68266] -出力 JwsAlgorithm.none: eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiJtci54QGNvbnRvc28uY29tIiwiZXhwIjoxMzAwODE5MzgwfQ. JwsAlgorithm.HS256: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtci54QGNvbnRvc28uY29tIiwiZXhwIjoxMzAwODE5MzgwfQ.dvd5Ak6zcBy0OB7gxVtehT3Ab5NO7XEggon6r_CTSfE Decoded: {"sub":"mr.x@contoso.com","exp":1300819380} JwsAlgorithm.RS256: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtci54QGNvbnRvc28uY29tIiwiZXhwIjoxMzAwODE5MzgwfQ.e2bHvaNKCS3H7eRTA2Wl-Yr5UDvLsNH26AG_qBOWXy__vJNSkPagLjvZB7yMTcKDKIOlE5tEw1ttZMgxeHxadrLCzQMYk7QKeqIePuTzGBcLza3JefGsVec_yx4DI1H2A5lvVCtBB3pA3L7HtRDr2qfxesqk_a1tV7EPfGZ4KjQ Decoded: {"sub":"mr.x@contoso.com","exp":1300819380} JwsAlgorithm.ES256: eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtci54QGNvbnRvc28uY29tIiwiZXhwIjoxMzAwODE5MzgwfQ.4zIp6hcWRqWzvprKAcwEaWbLx7INcknvOTrNwBxLLlvZeqCG8NOELBReZmrQVpZvqFvNGmlacCWxktwfpO_lfg Decoded: {"sub":"mr.x@contoso.com","exp":1300819380} JweAlgorithm.DIR, JweEncryption.A128CBC_HS256: eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0..Psk4PWhbgJ5SBQZPH4z-bw.8dlABeojYURZVe_hGvfaXdudLevjUknq-QGJhnepbXWPUmv8wU4rvp5kHdL3ZHxs.HR4m7-7cmctPgWLbt32ifw Decoded: {"sub":"mr.x@contoso.com","exp":1300819380} JweAlgorithm.A256KW, JweEncryption.A256CBC_HS512: eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIn0.AD9liopHl8AXXtfSzwxDYK7lcSoe-bm36jKEirazya15r-QW3cKqqHeO7JhJI6-oxolebrqM6tQrEUmytXgVUnrloyjbfmkJ.GdqQPXeULgijoHTiz3mSDw.NA-YcUrxdJhZWVQTSqOT8n1htLTylP7DaZd-SSeiLpV2KfSgiUd-cAOR8UiqVfAy.cz02bW3JjrNSM2qki1TY2AburxafZPthsRkO4jdodRQ Decoded: {"sub":"mr.x@contoso.com","exp":1300819380} JweAlgorithm.A256GCMKW, JweEncryption.A256CBC_HS512: eyJhbGciOiJBMjU2R0NNS1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwiaXYiOiJtQ19vd0dtdEN2MEYyd25hIiwidGFnIjoiNnVRc0Z6cG9zYkp6NV9EanZIYXNqdyJ9._FAA7PA_psMh37Wqln_AvE6IFvpu9HENupBP2KZXapElHjN80uj4EIsc3z9dVmmGpm3Mb9aca4B8aCoaLC1RNA.ZvST1J6vDRnqtoNsVPJX2A.8DvHDMSdUlK1wEhR9n6XPOzVgj_bKGAZFEvSMytcWj7RtxNUnkCizosMKK1Y2AMe.PTDKfWQk8liccKk1MpXDNy4uhY-9tddCFehmT84JPp4 Decoded: {"sub":"mr.x@contoso.com","exp":1300819380} JweAlgorithm.PBES2_HS256_A128KW, JweEncryption.A256CBC_HS512: eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwicDJjIjo4MTkyLCJwMnMiOiJvd1RpVjNFc3Bza1E2RUNnIn0.FqSi-M5hjv7SzkrufO_lJg1AjY6dU1KzopK28vxovJhAQf8JCmx2YNhdKi3G-fiHRFrFGK9Pi7wXSIHiIE6Qe6mNO8KNcHVv.bRJWD9kV6p1bWgyBvcPZDA.WzyUTsMBGhkzceCaZx4RwvD4wvjLJLd_1CS7n9umm-inaMMiWjf7hE4VftDu9ZYL.KIPnr7eD6ZzoLLXKSqdZTCt8G4bMIqKZzJDUrs5ZVqc Decoded: {"sub":"mr.x@contoso.com","exp":1300819380} -検証 --サイト~ https://jwt.io/ --公開鍵~ https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/files/resource/X509/SHA256RSA.cer.pem ---- Tags: [[:IT国際標準]], [[:認証基盤]], [[:クレームベース認証]], [[:暗号化]], [[:.NET Core]], [[:.NET Standard]]