2

CORS 対応の Web API を呼び出す必要があるシングル ページ アプリケーションがあります。どちらのアプリケーションも AAD によって保護されています。https://github.com/matvelloso/AngularJSCORSで Mat Velloso によって作成されたサンプルを見つけました

readme ファイルの手順に従いましたが、手順 2 で「作成したクライアント アプリケーションのクラス ID を使用することを忘れないでください」ということだけがわかりませんでした。新しく生成された GUID を使用しました。しかし、私は得続けています: XMLHttpRequest cannot load http://localhost:63918/api/values. The request was redirected to 'https://login.windows.net/devazureadnrw.onmicrosoft.com/wsfed?wa=wsignin1.0…3d0%26id%3dpassive%26ru%3d%252fapi%252fvalues&wct=2015-01-09T11%3a37%3a19Z', which is disallowed for cross-origin requests that require preflight.

次は Chrome コンソールです。

renewToken is called for resource:http://localhost:63918/
adal.js:959 Add adal frame to document:adalRenewFrame
adal.js:959 Renew token Expected state: 9964340c-3c3b-4a2a-b710-f0d44f58655a|http://localhost:63918/
adal.js:755 Navigate url:https://login.windows.net/devazureadnrw.onmicrosoft.com/oauth2
authorize?re…e=9964340c-3c3b-4a2a-b710-f0d44f58655a%7Chttp%3A%2F%2Flocalhost%3A63918%2F
adal.js:959 Navigate to:https://login.windows.net/devazureadnrw.onmicrosoft.com/oauth2
authorize?re….onmicrosoft.com&domain_hint=devazureadnrw.onmicrosoft.com&nonce=undefined
adal.js:959 Add adal frame to document:adalRenewFrame
adal.js:959 State: 9964340c-3c3b-4a2a-b710-f0d44f58655a|http://localhost:63918/
adal.js:959 State status:true
adal.js:959 State is right
adal.js:959 Fragment has access token
adal.js:959 State: 9964340c-3c3b-4a2a-b710-f0d44f58655a|http://localhost:63918/
adal.js:959 State status:true
adal.js:959 State is right
adal.js:959 Fragment has access token
adal.js:959 Add adal frame to document:undefined
(index):1 XMLHttpRequest cannot load http://localhost:63918/api/values. The request was redirected to https://login.windows.net/devazureadnrw.onmicrosoft.com/wsfed?wa=wsignin1.0…3d0%26id%3dpassive%26ru%3d%252fapi%252fvalues&wct=2015-01-09T11%3a37%3a19Z', which is disallowed for cross-origin requests that require preflight.
adal.js:959 Add adal frame to document:undefined
adal.js:959 State: 9964340c-3c3b-4a2a-b710-f0d44f58655a|http://localhost:63918/
adal.js:959 State status:true
adal.js:959 State is right
adal.js:959 Fragment has access token
adal.js:959 State: 9964340c-3c3b-4a2a-b710-f0d44f58655a|http://localhost:63918/
adal.js:959 State status:true
adal.js:959 State is right
adal.js:959 Fragment has access token

CORS プリフライト リクエストは、ステータス コード 200 で行われました。

> values/api OPTIONS    200 OK text/plain   angular.js:8560 Script 461 B 0 B
> 5 ms 4 ms
> authorize?response_type=token&client_id=1208eac1-f4dd-42f5-be33-886075f81be2&resource=http%3A%2F%2Flocalhost%3A63918%2F&redirect_uri=http%3A%2F%2Flocalhost%3A44302%2F&state=9964340c-3c3b-4a2a-b710-f0d44f58655a%7Chttp%3A%2F%2Flocalhost%3A63918%2F&prompt=none&login_hint=binjie%40devazureadnrw.onmicrosoft.com&domain_hint=devazureadnrw.onmicrosoft.com&nonce=undefined
> login.windows.net/devazureadnrw.onmicrosoft.com/oauth2 GET    302 Found
> text/html adal.js:297 Script
> 3.6 KB 0 B
> 1.30 s
> 1.29 s values/api GET 302 Found application/json  Other   677 B 0 B 13 ms 13 ms

これは私が見つけた唯一のサンプルであるため、行き詰まっています。何か提案はありますか?どうもありがとう。

4

2 に答える 2

1

遅れて申し訳ありません。通知が来ないと思うので見逃してしまいました。質問への回答:

1-Azure Active Directory にアクセスしてアプリを作成すると、Guid が生成されます。次に、それがアプリであることを識別するクライアント ID として新しい Guid を割り当てます。自分で新しい Guid を作成しないでください。クライアント ID として識別されたものを使用してください。

2-アプリが Azure にデプロイされているか、ローカルで実行されている (または他の場所で実行されている) かは関係ありません。応答 URI を正しく構成して、リダイレクトがその場所に収まる限り、問題はありません。

3-ユーザーが認証され、トークンが返されると、そのトークンで行うことはすべて、すでにそのユーザーに代わっています。たとえば、Azure Graph API に対してクエリを実行し、そのユーザーがどのグループに属しているかを確認できます。グラフ API は、Azure Active Directory と対話できる REST API です。これを機能させるには、Azure Graph API を呼び出してこの種の設定を読み取るためのアクセス許可をアプリに付与する必要があることに注意してください。また、呼び出すエンドポイントごとに、特定のアクセス トークンが必要であることも忘れないでください (認証から取得したものは、AAD に戻って、アクセスしたい特定のものに対して特定のアクセス トークンを要求する場合にのみ有効です)。

おそらく、開始するのに良い方法は、これを見ることです: http://azure.microsoft.com/en-us/documentation/articles/mobile-services-how-to-register-active-directory-authentication/

于 2015-02-11T01:38:54.530 に答える