1

開発中のシステムでクレーム対応セキュリティを使用する可能性を調査しようとしています。これらすべてについて読むほど、混乱します。それで、私は私がすでに知っていることを説明することに決めました、そして私はあなたに私の声明を訂正するように頼むでしょう。使用されているすべてのプロトコルとテクノロジーに迷いました。

以下は私のシステムの簡単な図です。2つのサービスがあります。WCFを使用して実装されたRESTサービスとASPMVCWebアプリケーションです。両方のサービスで信頼できるID発行者となるSTSを取得する必要があることはわかっています。特定のレベルのアクセスを区別するためにロールを使用します。

ここに画像の説明を入力してください

STS機能は、ADFS(またはそれに加えてさらに必要なものがある)またはWSO2IdentityServerを使用して実現される場合があります。STSとは、認証を希望するクライアントから資格情報を取得し、一連のクレームを返すサービスを意味します(他の情報の横にユーザーに割り当てられた役割が含まれます)。この一連のクレームは、トークンの形式になります。

この図では、さまざまなクライアントタイプをさまざまな色でマークしています。いいえ、使用されると思われるプロトコル/フォーマットについて説明します。フォーマットとは何か、プロトコルとは何かについて、私はかなり混乱しています。しかし、試してみましょう:

赤いシナリオ:リッチWCFクライアントがRESTサービスに対して認証する

  1. STSへの要求は、WS-trustを使用して送信されます(ADFSまたはWSO2に他の可能性はありますか?)。クレデンシャルは、X.509証明書、パスワードダイジェスト、Kerberos、Windows認証、SAMLトークン(これはフェデレーションシナリオで使用されます)など、いくつかの形式のいずれかである可能性があります。

  2. クライアントへの回答は、OAuthプロトコルを介して送信されるSWTトークンの形式になります。これは、RESTサービスに対して認証を試みるときに行う方法だからです。

    • ADFSはSWTとOAuthをサポートしていますか?情報が見つかりませんでした。
  3. 次に、クライアントはSTSから受信したトークンをRESTサービスに送信します。繰り返しますが、これはOAuthのSWTトークンです。

クライアントコードに関しては、すべてWindowsIdentityFrameworkを使用して簡単に実装できると思います。

グリーンシナリオ:リッチAndroidクライアントがRESTサービスに対して認証

すべてのプロトコル/フォーマットは前のシナリオと同じです。これを簡単に実装できるフレームワークはありますか?

青いシナリオ:WebブラウザーのユーザーがASPMVCWebアプリケーションに対して認証します

  1. ユーザーはWebアプリのメインページに移動します。Webアプリは、彼がまだ認証されていないことを検出したため、STSのサインオンページにリダイレクトします(サインオンページはSTSにありますよね?)。

  2. 3. STSはユーザーを認証し、SAMLトークンとリダイレクトを含むHTTP応答をwebappに送信します。したがって、ここではWS-TrustsではなくHTTPが使用されます。

別の質問。このWebブラウザーのシナリオでは、クライアントのマシンにCookieが書き込まれます。したがって、クライアントがもう一度認証を試みるときはいつでも、トークンを取得するためにCookieをstsに送信するだけです。資格情報を送信する必要はありません。STSは、実際の認証ロジックを使用せずに、Cookieに基づいてトークンを発行します。その声明は正しいですか?

4

1 に答える 1

2

ADFS / WIFは、SAMLトークンのみをサポートします。OAuthはサポートしません。

ADFS/WCFはWS-Trustを使用します。

サインオンページはADFSの一部です。

最後の質問に対する答えは「はい」ですが、(ある時点で)期限切れになり、ユーザーは再度認証する必要があります。

アップデート:

クレームベースのIDおよびアクセス制御ガイドをご覧ください

于 2013-01-13T18:01:05.690 に答える