0

私は現在、ASP Web API プロジェクトを作成し、フェデレーション認証に Thinktecture ID サーバーを使用するメインの MVC アプリケーションとは別にデプロイしたという状況に陥っています。

私が直面している問題は、Web api cors サポートに関係しています。より具体的には、mvc アプリケーションで自分自身を認証しますが、Web API に要求を送信すると、次のエラーが発生します。

XMLHttpRequest cannot load XXX. The request was redirected to 'https://localhost/idsrv/issue/wsfed?wa=wsignin1.0&wtrealm=http%3a%2f%2floca…assive%2..., which is disallowed for cross-origin requests that require preflight. 

WSFederationAuthenticatioModule が既にログオンしていることを確認するために必要な Http ヘッダーが要求に含まれていないため、エラーは理にかなっています。

私が気付いていない回避策はありますか?

4

1 に答える 1

0

私が見る限り、ここには 3 つの問題があります。 1. Web API で WIF 認証を有効にする方法。

これには、NuGet パッケージとして存在する Thinktecture.IdentityModel.45 (または MVC 5 用の Thinktecture.IdentityModel) を使用する必要があります。ここのサンプルを参照してください: Web Api セキュリティ サンプル

  1. その後、Ajax リクエストのセキュリティ ヘッダーでトークンを送信する必要があります。
  2. MVC サイトと Web API が同じドメインにない場合は、CORS の問題を処理する必要があります

問題 2 と 3 については、API 認証のドッグ フードを参照してください。

これにより、MVC サイトで受け取ったセキュリティ トークンを使用して Web API で認証する方法についても理解できるはずです。

于 2014-01-13T15:35:32.823 に答える