1

これが可能かどうかさえわかりませんが、kbs、ヘルプ、またはドキュメントで明確な答えを見つけることができません。

ACS を介して保護された WebAPI があります。アプリケーションは、サービス ID を使用して ACS 経由で WebAPI を認証し、アクセスを許可します。私がやりたいことは、サービス ID が個々の ID を識別するためにクレームを提示することです。たとえば、サービス ID A はタイプと ID を提示し、サービス ID B は同じクレーム タイプに対して異なる値を提示し、WebAPI はクレーム値に基づいて特定の呼び出しを承認できます。

現在、ACS ポータルを介して設定されたクレーム値を持つ出力クレームを使用してルール グループを介してこれを実装していますが、ルール グループは依存アプリケーション (My WebAPI) にアクセスするすべてのサービス ID に適用されます。異なる主張値。

すべての通信はサービス ツー サービスであるため、Live/Microsoft アカウントや Google などの別の ID プロバイダーではなく、ACS を使用する予定でした。ただし、現時点で唯一の結論は、独自のカスタム STS を実装してクレーム値を提供することです。

シナリオを明確に説明したことを願っています。誰かがまったく助けてくれますか?個々のサービス ID の要求値を設定するにはどうすればよいですか?それとも別の方法で行う必要がありますか?

ありがとう

アンドリュー

4

2 に答える 2

2

IIRC アプリケーションは独自のトークンを作成し、cert/symm キーで署名します。そのトークンのクレームは、ルール エンジンの入力になります...

..しかし、しばらく経ちました;)

于 2012-12-21T15:07:54.943 に答える
1

クリスマス/新年の休憩のためにオフィスを出る直前に、私はこの問題を解決することができました.

私はその問題から一歩離れ、新鮮な見方で問題に戻ってきました。アプリケーションはサービス ID に基づいて認証し、認証はサービスを呼び出すサービス間で行われるため、認証対象のサービス ID が多数存在することはありません。したがって、私の要件では、ルール グループを利用して、提供されたクレームに基づいてクレームを提供できます。

Windows Azure アクセス コントロール サービス ID はすべて nameidentifier クレーム ( http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name identifier) を提示するため、新しいサービス ID ごとに新しいルールを作成しました。 ACS ポータルのグループ:

新しい ACS ルール グループの作成

この新しいルール グループが作成されたら、次のようにルールを追加することにしました。ACS がサービスで認証するためのトークンを提供しているため、InputClaim Issuer が Access Control Service であることを選択しました。次に、受け取る予定の入力要求の種類を選択し、If ステートメントで確認します。したがって、次の例では、指定された nameidentifier クレームの値が StackOverflow (期待しているサービス ID の名前) である場合、ACS によって返されたトークンを使用して、値が UK の Country 出力クレームを返したいと考えています。また、必要に応じてさらに出力クレームを追加するためのルールも追加しました。これにより、対応するサービス ID の正しいクレームと値を返すことができました。

ACS クレーム ルールの追加

最後に、Relying Party Applications のリストに移動し、Relying Party アプリケーション (私のサービス) を選択し、作成した新しいルール グループを選択しました。

証明書利用者アプリケーションのルール グループの選択

このアプローチにより問題が解決され、残りのサービスに提供されたトークンからクレームを読み取り、提供された値に基づいて決定を下せるようになりました。はるかに複雑なアプローチを探し始めましたが、一歩下がって要件を明確に見てみると、コア ACS 機能で要件を達成できることがわかりました。これが、同様の要件を持つ他の誰かに役立つことを願っています。

于 2013-01-03T15:56:20.853 に答える