【发布时间】:2021-02-09 16:36:47
【问题描述】:
我正在尝试在我的 react 应用中使用 adal-node 实现客户端凭据流
我正在尝试的代码
var AuthenticationContext = require('adal-node').AuthenticationContext;
const authenticate = (): any =>{
var authorityHostUrl = 'https://login.microsoftonline.com';
var tenant = 'xxxx.onmicrosoft.com';
var authorityUrl = authorityHostUrl + '/' + tenant;
var applicationId = '2sdsdwewe-232jkdksdsdsadfsfdsdf';
var clientSecret = 'sdfer245dwfsfw3rt345r342fwfwefwf';
var resource = 'api://sdfwerwerwrwerwerwrewrwer';
var context = new AuthenticationContext(authorityUrl);
context.acquireTokenWithClientCredentials(resource, applicationId, clientSecret, (err: { stack: string; }, tokenResponse: any)=> {
if (err) {
console.log('well that didn\'t work: ' + err.stack);
} else {
console.log(tokenResponse);
}
});
}
我从我的本地人http://localhost:3000/ 运行
因此,在应用程序的 Azure 活动目录应用程序注册中,我在 Web 重定向 URI 下添加了 http://localhost:3000/。还尝试在 SPA 下添加它
但是当我运行它时会出现 CORS 错误
Access to fetch at 'https://login.microsoftonline.com/xxxx.onmicrosoft.com/oauth2/token?api-version=1.0' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我在这里遗漏了一些东西
当我以 chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security 运行 Chrome 时
这工作并生成有效令牌
【问题讨论】:
-
所以你想避免cors问题?我不确定您的目标是什么,如果您想在 SPA 中 generate token,您可以使用身份验证代码流或隐式流(新 Msal.UserAgentApplication)来避免 cors。
-
@Tiny-wa 是的,根据我的理解,如果您指定正确的重定向 URI,这不应该发生
标签: reactjs azure-active-directory cors adal clientcredential