2017-08-08 6 views
0

私は、SPAアプリケーションでAzure AD認証を実装しようとしています。 私は、WEB APIのOWIN Startup.csファイルと、AngleJsフロントエンドアプリケーションのADAL.jsファイルを使用しています。 (多くのチュートリアルの提案通り)ポート/ HostEnvの両方を持つSPA/WebAPIアプリケーション用のAzure AD実装。

私のアプリケーションには、WebAPIとUIが異なるドメイン/ポートでホストされていません。基本的に、WebAPIはUIアプリケーションプロジェクトで参照されます。 (したがって、CORSを有効にする必要はありません)。

私はAzure ADにアプリケーションを別途登録しました。 すなわちClientAppは - > URLを返信:http://localhost:90/と WebAPIの - > APPIDサインオンURL:http://localhost:90/Api/V1/

私はADAL.jsを設定しても、UIからアプリケーションにアクセスしようとすると、ログインページを取得しています。また、URLリダイレクトをログに記録した後に生成されたid.tokenを取得できました。また、Web APIコントローラに[Authorize]属性を装飾しました。

ここで私の主な関心事は、私が郵便配達員のようなツールを使ってWebAPIを直接呼び出そうとすると、私はアクセス拒否/ Unauthroized Access(401)を取得しているということです。誰かが私のローカルenvでどのようにテストできるかを説明することができますか?このシナリオでは?

サンプルリクエストはhttp://localhost:93/Api/V1/User/Preference(GET) Web API呼び出しのヘッダーのAuthroizationプロパティにトークンを追加しています。

また、私はWebAPIを保護するためにOWIN/Startup.csファイルを必要としないと思います。私が試したやり方は、トークン値をヘッダーで送信し、JwtSecurityTokenを使用してAudienceIDを取得し、Authroizationプロパティの内容を解析することです。このアプローチはセキュリティごとに正しいのでしょうか、私はOWINの実装に固執すべきです。

答えて

0

ADAL JSのチュートリアルには、CORSを必要とせずに、バックエンドAPIとUXが同じドメインとポートでホストされています。たとえば、https://azure.microsoft.com/en-us/resources/samples/active-directory-javascript-singlepageapp-dotnet-webapi/を参照してください。これらのサンプルでは、​​JSレイヤーがWeb APIとまったく同じアプリとして有効なので、1つのAzure AD登録だけが必要であることがわかります。 外部APIの呼び出し方法を示すいくつかのサンプルがあります。これらのサンプルではCORSが必要ですが、余分なAPIに対してのみ必要です。アプリのバックエンドを呼び出すロジックは同じです(Azure ADアプリの登録は1つで、CORSの必要はありません).PostmanはUXをポップする機会を提供していないので、あらかじめ必要なトークンを入手することができます。 OWINを使用すると、認証設定を集中管理できます。コントローラにauthを追加する場合は、追加する新しいコントローラごとにそのロジックを繰り返す必要があります。また、アセンブリを更新するときにコード変更が必要なAPIサーフェスを使用する場合は、コードを維持するのが難しくなりますが、標準のミドルウェアの設定を使用すると発生する可能性は低いです

+0

ありがとうございます@Vittorio しかし、このアプリケーションでは、postman/fiddler(uiアプリケーションのトークン値がヘッダーのAuthenticationプロパティで送信されます)を介してWeb APIを呼び出し、呼び出しを行うテストシナリオを持っていきたいと思いますコントローラ([Authorize]属性で装飾されています)に、ユーザーを認証できますか? 私は試みていますが、依然としてUnauthorizedエラーが発生します。プロジェクトのサンプルコードが必要な場合はお知らせください。 – user3041212

+0

トークンが有効である限り(たとえば、アプリで通常のフローで取得したと同じように見えます)、動作するはずです。コントローラーはあなたの要求が郵便配達人か他のどのクライアントから来ているかを知る方法がありません(ユーザーエージェントは役割を演じません) – vibronet

+0

https:// stackoverflowをご覧ください。com/questions/45939264/webapi-azure-ad-authentication-not-working-on-iis-but-working-fine?noredirect = 1#comment78858240_45939264 – user3041212

関連する問題