如何在Azure AD authorization for the ASP.NET Core web app中获取ID令牌和访问令牌?我想将该令牌传递给客户端应用程序以进行API访问。那是合适的情况吗?
答案 0 :(得分:0)
您可以使用MSAL库登录用户并请求用于访问受Azure AD保护的API的令牌。
以下代码段显示了如何登录用户:
INSERT INTO #test_Identity(Name)
SELECT top 10000 'A'
FROM sys.objects
SQL Server parse and compile time: CPU time = 13 ms, elapsed time
= 13 ms.
Table '#test_______________00000000569D'. Scan count 0, logical reads 21413, physical reads 0,
read-ahead reads 31, lob logical reads 0, lob physical reads 0,
lob read-ahead reads 0. Table 'sysschobjs'. Scan count 1, logical reads 242, physical reads 0,
read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times: CPU time = 110 ms, elapsed time = 101 ms.
静默获取用户令牌
// Add scopes for the id token to be used at Microsoft identity platform endpoints.
const loginRequest = {
scopes: ["api://your_api_applicationid/.default"],
};
myMSALObj.loginPopup(loginRequest)
.then((loginResponse) => {
//Login Success callback code here
}).catch(function (error) {
console.log(error);
});
参考:
Quickstart: Sign in users and get an access token in a JavaScript SPA
答案 1 :(得分:0)
您可以将Implicit flow用于在无法安全管理客户端机密的Web浏览器上下文中运行的spa应用程序。 Here是React的代码示例。
在MSAL中,您可以使用acquireTokenSilent
方法获取应用程序需要调用的API的访问令牌,该方法向Azure AD发出无提示请求(不使用UI提示用户)以获取访问令牌。然后,Azure AD服务将返回一个访问令牌,其中包含用户同意的范围,以允许您的应用安全地调用API。您可以从AuthProvider.js
中引用codes。
另一种更安全的方法是使用Authorization Code Flow with PKCE
。 MSAL.js 2.0.0
支持该流程,目前已发布Alpha,有关更多详细信息,请参见此处document。