2016-05-12 4 views
0

私がしたいのは、公開鍵を使ってトークンを暗号化し、秘密鍵を使って相手側で復号化できるようにすることです。公開鍵/秘密鍵ペアを使用してSSOトークンを暗号化するにはどうすればよいですか?

私は鍵ペアを作成するには、次のコマンドを使用しますが、今私は、トークンを暗号化するために、自分のコード内の公開鍵をロードする方法がわからないよ:

$ ssh-keygen -t rsa -b 4096 

は、私は何のJavaライブラリを使用しますキーをロードして文字列を暗号化するために使用するには?コード例に加えて、わかりやすく理解しやすいように、すべての読書資料にも興味があります。

答えて

2

uservoice/developer文書のSSOトークンを暗号化するJava(および他の多くの言語)の良い例が見つかりました。 PastebinのI pasted the Java code(希望uservoiceは気にしません!)ここでペーストするのは少し長すぎます。


もう1つ注意してください...私は JWTトークンとOAuthを認可することをお勧めします。

あなたのトークンがJWTで実際に暗号化しない場合は記号となりますので、jose4jを使用することをお勧めします。

トークンは、大部分の非機密情報(何時、いつ、いつ、どれくらいの期間アクセスできるか)を明らかにするため、特定のアーキテクチャでは暗号化する必要はありません...セキュリティはではありません。それはを読むのが難しいトークンですが、には非常にアクセスしにくく、のトークンが最初です!攻撃者がトークンにアクセスできるようになると、攻撃者はトークン(例えばアクセスデバイスに関するさらなる保護がない限り行うことができます)を使用することにもっと関心を持っているため、トークンが含まれています(これは何も表示されません)。彼らはURLエンコードされた輸送を容易にするためにあるよう

JWTsは誰でもeasily readすることができます...しかし、彼らは多くの場合でも、認証サーバに保存されていないとして、彼らは、彼らドン(信頼されるようにを署名する必要がありますか署名が有効であればサーバーだけがそれに署名する必要があります)...そしてトランスポート層で保護するためにHTTPS接続を使用するだけで送信できます。

純粋なJavaでRSA公開鍵/秘密鍵をロードするには、this questionへの回答を参照してください。

JWTの署名に署名して確認するには、jose4j wikiのthis pageにチェックを入れてください。

あなたのトークンが完全に秘密滞在したい場合は、それ自体では全く情報が含まれていません不透明トークンを使用していますが、ポイントトークンはこれだけで、表現することになっている実際の情報それを生成するサーバーがアクセスできるので、あなたの情報は決して直接公開されません。不透明なトークンは、通常は長いUUIDです。

トークンと認可/認証の詳細については、Nordic APIsのブログを参照することをお勧めします。このブログには、多数の記事や役に立つオープンソースリソースへのリンクが含まれています。

免責事項:私は北欧のAPIをスポンサーとする会社で働いています。

+0

JWTを公開鍵/秘密鍵で暗号化/復号化することもできます。ただし、公開鍵を持つ人が誰でも暗号化できるため、完全性保護や発信元認証は提供されません。だからおそらくサインしたいと思うだろう。同じjose4jページのこの例では、署名付きで暗号化された(ネストされた)JWTが表示されます。 https://bitbucket.org/b_c/jose4j/wiki/JWT%20Examples#markdown-header-producing-and- conssuming-a-nested-署名と暗号化されたjwt - それはECキーとアルゴリズムを使用していますが、RSAでも同様のことができます。 –

関連する問題