2016-03-25 54 views
0

Azure Active Directory B2Cで認証中に取得したIDトークンの署名を確認するのに問題があります。Azure Active Directoryで署名付きIDトークンを検証するB2C

私はこの命令のセットで探しています: は[https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-reference-tokens/#token-validation] [AzureのADのB2Cプレビュー:トークン参照>トークンの検証]

だから、私は署名を検証しようとする異なるのPython 3つのパッケージをしようとしていますすべてがIDトークンであるJWTと、署名を検証するための公開鍵である「鍵」または「秘密」を必要とするようです。

明確にすることが、AzureのActive DirectoryのB2CのIDトークンは、RS256を使用して署名されています

{'alg': 'RS256'} // Found in header of ID token 

私は、キーを取得するには、このリンクを使用しています:

https://login.microsoftonline.com/<b2c_directory>.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in 

このリンクは、JSON文字列を返します。 "kid"、 "use"、 "kty"、 "n"、 "e"

「n」と「e」のキーは一般に公開されていますキーを確認するために必要なキー署名。私は個別にまたは連結した(n + eとe + n)の両方を試みましたが、その署名を検証することはできません。

私はPyJWTを使用していますが、OpenIDを使用して認証する方法を知っている人がいれば、署名を正常に検証する限り他のPython 3パッケージを使用しても構いません。

+0

"e"は指数であり、 "n"は係数です。 IDトークンの署名を検証するのに適した公開鍵を生成するためにそれらをどのように組み合わせるかは、誰でも知っていますか? –

+0

ここでは、load_rsa_pub_key()について見てみましょう。 https://github.com/jpadilla/pyjwt/blob/c5ee34e86bc42bef60ef6e701df569c2c86a5d5d/tests/keys/__init__.py公開鍵を扱う方法については、いくつかのアイデアがあります。 –

答えて

0

@Ed私が知る限り、私たちは通常、RSA署名の公開鍵を生成するために指数(ショートネーム「e」)とモジュラス(ショートネーム「n」)を使用します。 このページ(https://en.wikipedia.org/wiki/RSA_(cryptosystem))を参照することができます:

公開鍵はモジュラスnおよびパブリック(または 暗号化)指数eで構成されています。秘密鍵はモジュラスnと プライベート(または復号化)指数dで構成され、秘密にしておく必要があります。 p、 q、φ(n)も秘密にしておく必要があります。 dを計算するために使うことができるからです。

一般に、それらをエンコードしてint値を取得する必要があります。私はリンク(https://github.com/jpadilla/pyjwt/blob/c5ee34e86bc42bef60ef6e701df569c2c86a5d5d/tests/keys/init.py)のフォーム 'ブレントSchmaltz'を参照することをお勧めします。また、プロジェクトで署名を使用する方法を共有することもできます。 よろしくお願いします。

関連する問題