ASP.NET Core的Azure AD身份验证问题

时间:2020-03-17 14:39:03

标签: asp.net-core azure-active-directory

如何在Azure AD authorization for the ASP.NET Core web app中获取ID令牌和访问令牌?我想将该令牌传递给客户端应用程序以进行API访问。那是合适的情况吗?

2 个答案:

答案 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 PKCEMSAL.js 2.0.0支持该流程,目前已发布Alpha,有关更多详细信息,请参见此处document