2

こんにちは、Vittorio Bertocci のチュートリアルを読んで実装しました。

「Windows Azure AD と Microsoft OWIN コンポーネントで ASP.NET Web API を保護する」

「Microsoft.Owin.Security.ActiveDirectory によるセルフホスト API の保護」

ただし、チュートリアルとは異なり、私の Web アプリケーションは次の OWIN コンポーネントで構成されています: NancyFx & ASP.NET Web API (ここで説明されているアーキテクチャ パターンに従います) NancyFx モジュール (認証が必要なルートにヒットしたユーザーを認証するため):

次のエラーが表示されます

追加情報: 対話型ユーザー認証に必要なアセンブリの読み込みに失敗しました。アセンブリ 'Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' が存在することを確認してください。

ユーザーにログインを求めるポップアップ表示される AAD ダイアログは、明らかに WindowsForms に依存しており、Web アプリケーションから呼び出すべきではありません。

代わりにどの AAD 資格情報プロンプトを使用する必要がありますか? Web アプリ クライアントで AAD 認証を実装するにはどうすればよいですか?

4

1 に答える 1

5

あなたが実装しようとしているシナリオについての私の理解は、次のアクターがいるということです:

ブラウザ -> Web アプリケーション -> Web API

ブラウザーが Web アプリケーションに対してユーザーを認証すると、Web アプリケーションは、ユーザーに代わって Web API のリソースにアクセスできるようにするトークンを取得しようとします。

その場合、Web アプリケーションはブラウザーを AAD OAuth 2.0 認証エンドポイントにリダイレクトする必要があります。そこでユーザーは資格情報を入力し、認証コードを使用して Web アプリケーションにリダイレクトされます。その後、その認証コードを使用して、Active Directory Authentication Library (ADAL)経由でトークンを取得できます。具体的には、AuthenticationContext.AcquireTokenByAuthorizationCode メソッドを使用します。Vittorio による次のブログ エントリでは、トークンを取得するために Web アプリケーションに実装する必要があるコードについて詳しく説明しています。これは OWIN 固有の実装ではありませんが、NancyFx アプリに簡単に変換できるはずです。

ADAL の AcquireTokenByAuthorizationCode を使用して Web アプリから Web API を呼び出す

「Microsoft.Owin.Security.ActiveDirectory によるセルフホスト API の保護」に従って実装した ASP.NET Web API を変更する必要はありません。

Hosted API の保護...ブログ エントリのクライアント アプリの例で使用されている AuthenticationContext.AcquireToken のバージョンは、ブラウザーが関与しない別のシナリオを対象としています。代わりに、ユーザーは、ユーザーに代わって Web API を呼び出すデスクトップ アプリケーションとやり取りしています。その場合、ユーザーがサインインして適切なトークンを取得できるようにするには、AcquireToken 呼び出しでブラウザー ベースのダイアログを表示する必要があります。

于 2014-01-10T01:26:31.643 に答える