CORS要求をAADで保護されたAzure Webサービスに要求しようとしています。呼び出しを行っているアプリケーションには、バックエンドコードはありません - html + jsのみです。 私はadal.jsを使用して、すべての設定(Azure Web App、adal.jsの設定)を行い、adal.jsを使用してトークンを受け取ることができました(これはAdvanced RESTクライアントを使用して有効であることを確認できます)。私は以下のように電話をかけるしようとすると、OAuth2 CORSがAzure Web Appを呼び出すのは、JavaScriptのみを使用してAADで保護されています。
問題がある:
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// XHR for Chrome/Firefox/Opera/Safari.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// XDomainRequest for IE.
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// CORS not supported.
xhr = null;
}
xhr.withCredentials = true;
xhr.onload = function() { ... };
xhr.onerror = function (error) { ... };
xhr.send()
私は
XMLHttpRequest cannot load
<myAppUrl>. Redirect
from <myAppUrl> to
'https://login.windows.net/<guid>/oauth2/authorize?response_type=code+id_token&redirect_uri=<myAppUrl>%2F.auth%2Flogin%2Faad%2Fcallback&client_id=<guid>&scope=openid+profile+email&response_mode=form_post&nonce=cdf7754a3d66498baad6809f3de0b0ae_20170910165538&state=redir%3D%252Fapi%252FValues'
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is
present on the requested resource. Origin 'http://localhost:59672' is
therefore not allowed access.
を受け、私は唯一のAuthorizationヘッダーが正しく渡されていなかったので、そうアプリがリダイレクトしたいターゲットの推測することができます私はログインするために。私は手動で私は複数のチュートリアルを試してみました
受信
xhr.setRequestHeader("Authorization", "Bearer " + token);
追加し、そのようなヘッダを追加しようとするでしょう場合は、実際に何Authorizationヘッダが...
を要求中でない(つまり、このarticle)、しかし、常にいくつかのnugetパッケージをロードするバックエンドコードがあります - 私はhtml + jsしか持っていません。
デッドエンド。どのようにそれを動作させるためのアイデアですか?それも可能ですか?
(JS + HTML)? Azure上にある場合は、Azure App設定でCORSを有効にしてみてください。 –
最初のリクエストでは、リクエストが認証されていないため、リダイレクトを受信しています。 Azure ADは、ドメイン間の要求を許可していないため、401ステータスコードを返すようにアプリを設定することは意味をなさないかもしれません。あなたの2番目のものも動作しないので、JWTベアラトークンを使用するように認証を設定していない可能性がありますか?ここに認証設定を追加できますか? – juunas
@PrzemekMarcinkiewicz:CORSは設定されているはずです。ブラウザと同じセッションで直接Webサービスを開くと、すべての認証が処理され、問題なくCORSを作成できます。 – Miguzo