私は、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の実装に固執すべきです。
ありがとうございます@Vittorio しかし、このアプリケーションでは、postman/fiddler(uiアプリケーションのトークン値がヘッダーのAuthenticationプロパティで送信されます)を介してWeb APIを呼び出し、呼び出しを行うテストシナリオを持っていきたいと思いますコントローラ([Authorize]属性で装飾されています)に、ユーザーを認証できますか? 私は試みていますが、依然としてUnauthorizedエラーが発生します。プロジェクトのサンプルコードが必要な場合はお知らせください。 – user3041212
トークンが有効である限り(たとえば、アプリで通常のフローで取得したと同じように見えます)、動作するはずです。コントローラーはあなたの要求が郵便配達人か他のどのクライアントから来ているかを知る方法がありません(ユーザーエージェントは役割を演じません) – vibronet
https:// stackoverflowをご覧ください。com/questions/45939264/webapi-azure-ad-authentication-not-working-on-iis-but-working-fine?noredirect = 1#comment78858240_45939264 – user3041212