web-dev-qa-db-ja.com

STSトークンの形式は、SAMLとSWTとJWTを相互にどのように比較しますか?

Azure ACS STSを構成していますが、次のトークン形式またはその使用方法に基づいてsecurityに影響があるかどうかを知りたいです。この質問への回答は、CA Siteminder、Ping Identity、ADFSなどの他のSTSに適用されます。これが私の構成ポータルに表示される選択です。

enter image description here

対応するヘルプリンク このようなセキュリティの質問をカバーしていないMSDNドキュメントに移動します

トークン形式の違いは、シリアル化の方法にすぎません。

  • トークンのサイズ(ブラウザーへの往復の可能性があります)
  • セキュリティの根本的な違い
  • 特徴と機能の違い

私はいくつかのMSFTの会談で、SWTはSAMLの過度に簡略化されたバージョンであり、JWTはGoogle、IBM、およびMSFTによってまだ確定されていない標準であり、SWTとSAMLの間の機能を妥協する必要があると聞きました。

15

良くも悪くもプロトコルの使用に関連しています。 SAMLにはその場所があり、SWT/JWTなどにはその場所があります。 SAML/JWTはまだ初期段階にあり、変化し続けているのに対して、SAML仕様はかなり堅固です。

SAMLには多くのつまみがあり、かなり複雑になっています。これは優れたセキュリティの敵ですが、だれもがほとんど同じ方法で実装しています。 SWT/JWTの設計はかなり単純ですが、誰もが流血の実装標準に同意することはできず、使用されている多くのパブリックライブラリはセキュリティレビューを受けていません。

また、トークンの署名方法や、署名に使用されるキーの保護方法にも依存します。共有秘密は保護するのがより難しくなる傾向があり、PKIはPITAですが、他の人は同意しない場合があります。

6
Steve

セキュリティの観点からは、JWTトークン仕様とSAMLトークン仕様の間に大きな違いはありません。それは主にサポートされている署名と暗号化アルゴリズムに要約されます(JWTはこの点でより制限されています。参照 http://tools.ietf.org/html/draft-jones-json-web-token-10#appendix- A )。

この使用例の場合、最終的には両方ともクレームを提供するだけです(有効期限、聴衆など、必要なすべての手荷物とともに)。ただし、リンク先のサイトでは、ACSのJWTの実装は暗号化をサポートしていないため、安全性が低いとされています。もちろん、これは実際のユースケースによって異なります。

暗号化をまったくサポートしていないSWTトークンについても同様です。ただし、トークンは機密性を提供する安全なチャネル(HTTPSなど)を介して送信できるため、これは実際には問題にならない可能性があります。

また、セキュリティ以外の観点から、非重要なパフォーマンスの違いがある可能性があることに注意してください(通常、SAMLはリソースに最も負担をかけます)。

4
blazee

結局のところ、それはフォーマットの好みなので、私は本当に重要だとは思いません。 SAML 2.0は堅固なものですが、非常に大きく冗長です(XMLがそうであるように)。しかし、最近の私の個人的な好みでは、自分のプロジェクトを使用しています。 JWTトークンを試してみます、これはJSON形式のトークンです。クライアントアプリケーションが異なるプラットフォームにまたがっている場合は、JSONオブジェクトの表示と処理がはるかに簡単になる可能性があります。

私のクライアントアプリケーションは

  • 純粋なAngularJSアプリケーション
  • iOS iPadおよびiPhoneアプリ
  • Windows 8アプリ
  • Androidアプリ

また、JSON形式のすべてのペイロードを含む認証ヘッダートークンを受け入れるWeb APIによって保護されているため、JWTは私にとっては論理的な選択肢のように見えました。完全に.NETにいるときは、すべてを簡単にするためにSAMLトークンを使用するだけです。

純粋なMicrosoft Worldの外に露骨に広がっている場合:フォーマットとしてJSONを他の利用可能なフォーマットよりも使用することを強くお勧めします。 JSONは最近の最新のWebの形式であるため、それもほぼ保証されています。

1
Max Alexander

これは古い質問であり、セキュリティの専門家ではありません。ただし、Azure ACSとトークンの種類に関する私の経験から、3つの結論が導き出されました。

  1. SAMLは、箱から出してもほぼ動作しました。 JWTはもっと面倒だったので、機能させるにはブログに頼らなければなりませんでした。
  2. Cookieのサイズは、SAMLとJWTで同等でした。私のデモアプリは約30のクレームを通過しました。 JWTがSAMLよりもはるかに軽量であるという主張を正当化するものは何もありませんでした。
  3. Identity and Access Visual Studioプラグインは、開発中のトークンのモックに使用できるローカルSTSをセットアップする手段を提供しました。 JWTはこのツールのオプションではありませんでした。

だから私はSAMLを使いました。

1
Jamie Ide