繁体   English   中英

如何将 AccessTokens 存储到 Cookies 并使用它们为 Asp.net web 应用程序(非 MVC)调用图 API

[英]How Store AccessTokens to Cookies and use them to call Graph API for Asp.net web application (non MVC)

我想调用图 API 来获取 OneDrive 数据。 我能够获得看起来像这样的 JWT // 故事

nts of the JSON look like this:
        //  {
        //     "token_type":"Bearer",
        //      "scope": "Directory.Read.All Files.ReadWrite Group.ReadWrite.All Mail.ReadWrite Mail.Send User.ReadBasic.All",
        //      "expires_in":"3599",
        //      "ext_expires_in": "0",
        //      "expires_on":"1426551729",
        //      "not_before":"1426547829",
        //      "resource":"https://graph.microsoft.com/",
        //      "access_token":"eyJ0eXAiOiJKV1QiLCJhb...",
        //      "refresh_token":"AAABAAAAvPM1KaPlrEqd...",
        //      "id_token":"eyJ0eXAiOiJKV1QiLCJhbGci..."
        //  }

刷新令牌、存储在 cookies 中并访问它们以调用 API 的正确步骤是什么。我浏览了很多可用的文档,仍然不确定什么是正确的流程和方法。

请指导我正确的做法。

感谢您伸出援手。 对于您的方案,我建议对 .NET 使用MSAL并实施授权代码流 在此流程中,当用户登录 web 应用程序时,该应用程序会收到一个授权代码,该代码将被兑换以获取令牌以调用 web API。 MSAL 在获取令牌后缓存令牌并可以刷新令牌。 以下是从令牌缓存中获取令牌的方法:

AuthenticationResult result = null;
var accounts = await app.GetAccountsAsync();

try
{
 result = await app.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
        .ExecuteAsync();
}
catch (MsalUiRequiredException ex)
{
 // A MsalUiRequiredException happened on AcquireTokenSilent.
 // This indicates you need to call AcquireTokenInteractive to acquire a token
 System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}");

 try
 {
    result = await app.AcquireTokenInteractive(scopes)
          .ExecuteAsync();
 }
 catch (MsalException msalex)
 {
    ResultText.Text = $"Error Acquiring Token:{System.Environment.NewLine}{msalex}";
 }
}
catch (Exception ex)
{
 ResultText.Text = $"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}";
 return;
}

if (result != null)
{
 string accessToken = result.AccessToken;
 // Use the token
}

在上面的示例中,应用程序首先尝试从令牌缓存中获取令牌。 如果抛出MsalUiRequiredException异常,应用程序将以交互方式获取令牌。

请参阅有关授权代码流程的其他文档

如果您还有其他问题,请告诉我这是否有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM