Azureでホストされ、Active Directoryで保護されたAPIアプリケーションを作成しました(ブラウザでURLを開くと、Microsoftのログインページにリダイレクトされます)。 今私はAPIからデータを取得する角度のアプリを持っています。私はActice Directoryで角度アプリを保護しました。このようにして、認証に使用できるトークンを取得したいと思います。Azure API呼び出し:応答にhtmlページが含まれています
APIの呼び出し:
const auth = btoa("[my username]:[my password]");
var token;
if((window.location.href).indexOf('/') != -1) {
var queryString = (window.location.href).substr((window.location.href).indexOf('/') + 1);
token = (queryString.split('='))[1];
token = decodeURIComponent(token);
}
$http.defaults.headers.common['Authorization'] = 'Basic ' + auth;
$http.defaults.useXDomain = true;
$http.defaults.headers.common['x-ms-token-aad-id-token'] = token;
delete $http.defaults.headers.common['X-Requested-With'];
var erg = $http.get('http://[app name].azurewebsites.net/api/contacts')
.success(function (data, status, headers, config) {
$scope.loggedIn = "LOGGED IN";
$scope.responseData = data;
})
.error(function (data, status, header, config) {
console.log("ERROR");
});
私は無効 '同一生成元ポリシー' でChromeを開く必要がありました。
返されたデータ:
<html><head><title>Working...</title></head>
<body>
<form method="POST" name="hiddenform" action="https://[app name].azurewebsites.net/.auth/login/aad/callback"><input type="hidden" name="id_token" value="eyJ0[...]NBw" />
<input type="hidden" name="state" value="/api/contacts#" />
<input type="hidden" name="session_state" value="fdbe7ee3-[...]-b12663d39846" />
<noscript><p>Script is disabled. Click Submit to continue.</p><input type="submit" value="Submit" /></noscript>
</form>
<script language="javascript">document.forms[0].submit();</script>
</body>
</html>
がどのようにAPIが実際に返す必要があることをJSONデータを得ることができますか?このhtmlスニペットで何ができますか?
このチュートリアルは、https://azure.microsoft.com/en-us/documentation/articles/active-directory-devquickstarts-angular/で確認してください。あなたのAPIを呼び出すためのアクセストークンを取得するには、最初にAzure ADで認証する必要があります。また、フロントエンドのJavaScriptにパスワードを設定しないでください。 – juunas
https://github.com/AzureAD/azure-activedirectory-library-for-jsを使用してトークンを取得し、リソースを呼び出すために活用しようとしましたか? AADによって保護されています –
はい、私はそれを試しました。私はトークンを(URLで...)取得しますが、私はAPIにアクセスすることはできません。実際に私はトークンをどこに置くべきか分かりません。 –