3

ACS を利用して、Web サイトで Windows アカウント ユーザー (および最終的には他の ID プロバイダーのユーザー) を認証したいと考えています。

ACS に関する多くのリソースを見つけましたが、そのほとんどは、ユーザーを検証するために UI レイヤーで WIF を使用するか、マネージ コードを使用することに関係しています。それは避けたいです。JavaScript/jQuery を使用して ACS に REST ベースの呼び出しを行い、Microsoft アカウント ユーザーのトークンを取得することで、ACS からトークンを取得することはできますか?

私が見た例の 1 つがこのリンクですが、これは ID プロバイダーを利用する代わりにサービス ID を使用しています。 http://code.msdn.microsoft.com/windowsazure/MVC4-Web-API-With-SWT-232d69da

これが私の最終目標です:

  1. この Web サイトには、UI レイヤー (MVC 4) とサービス レイヤー (MVC WebAPI) の 2 つのレイヤーがあります。これらのレイヤーは両方とも、Azure で互いに独立してスケーリングする必要があります。
  2. UI レイヤーで ACS を呼び出して、現在のセッションが認証されているかどうかを判断したいと考えています。そうであれば、ACS がクライアントにトークンを返すようにしたいと思います。ステップ3で使用するために、そのトークンをクライアントに保存したいと思います。
  3. ユーザーがログインしたら、クライアントにサービス層への REST ベースの呼び出しを行わせ、各要求のヘッダーに Microsoft アカウント/ACS ユーザー トークンを渡し、この 2 番目のサービス要求の UI 層を完全にバイパスさせたいと考えています。 . サービス層は、リクエストごとにユーザーを認証します。
  4. クライアントは、ログイン ページにリダイレクトするか、結果を表示することによって、サービス層からの応答コード (200、401 など) を処理します。

ステップ 2 についてはよくわかりません。クライアント ブラウザは、サービス層に渡すことができるトークンを ACS からどのように取得しますか?

基本的に、Vittorio がここで説明していることを実行したいのですが、Windows 8 ストア アプリの代わりに MVC4 Web アプリを使用したいと考えています。

4

2 に答える 2

1

リックがリンクしているVittorioのブログ投稿を読む前に、この回答を書き留めました。それはほとんどあなたが望むもののようです。とにかく、WIFとこのシナリオがどのように機能するかについてもう少し詳しく説明しますが、その投稿を確認する必要があります。

まず、MVC 4アプリケーションでWIFを使用する場合、UI/プレゼンテーション層で認証または検証が行われないことに注意することが重要です。WIFはリクエストレイヤーで機能し、Javascriptルートを選択した場合に自分で行う必要のある多くのことを実行します(これは有効なルートではないと思いますが、おそらく多くの作業で実行できます) )。

これは次のようになります。ユーザーが認証を必要とするページにアクセスすると、WIFはユーザーをACSにリダイレクトし、そこでログインするためにGoogle / Microsoft(IDプロバイダー)に送信されます。IDプロバイダーで認証された後、ACSは、結果のアクセストークンを送信し、認証されたユーザーに関する要求をアプリケーションに返します(ACS構成のリターンURL)。最後に、WIFはACSによって送信されたトークンの検証を処理し(小さなタスクではありません)、ユーザーの識別に使用できるClaimsPrincipalオブジェクトをアプリケーションに作成します。

ユーザーがログインし、ユーザーの資格情報がフロントエンドからバックエンドに引き継がれる、なりすまし/委任が必要なようです。この状況では、MVC4アプリのユーザー認証にWIFを使用するだけではいけない理由はわかりません。ユーザーが認証し、WIFがトークンを処理/検証します(ただし、Web APIを呼び出すため、軽量性のためにJWTTokenHandlerを使用する必要があります)。MVCプロジェクトで、Authorizationヘッダーのトークンを使用してWebAPIにリクエストを送信するアクションを作成します。Web APIは、着信要求のAuthorizationヘッダーを読み取るように構成され、JWTTokenHandlerを使用してトークンを検証します。これで完了です。このコードサンプル(特にGlobal.asax.csのコード)からWebAPI部分のコードの多くを盗むことができます。http://code.msdn.microsoft.com/AAL-Native-Application-to-fd648dcf

于 2013-03-13T07:50:50.430 に答える
1

ステップ 2 では、MVC4 Web アプリは証明書利用者であるため、サブジェクト/ユーザーによって提示されたトークンのクレームに依存します。つまり、UI 呼び出し ACS ではなく、認証のためにユーザーを ACS にリダイレクトするだけです。とにかく、あなたの要件と説明に基づいて、これがあなたが探しているソリューションだと思います.

http://blogs.msdn.com/b/vbertocci/archive/2013/01/09/using-the-jwt-handler-for-implementing-poor-man-s-delegation-actas.aspx

お役に立てれば。-リック

于 2013-03-13T01:25:38.387 に答える