使用Azure AD身份验证获取承载访问令牌以访问o365资源

时间:2018-05-17 22:36:03

标签: c# azure-active-directory microsoft-graph asp.net-core-2.1

我正在使用沼泽标准,文件 - >新的Asp.Net核心Web应用程序(Razor Pages)项目,并将其配置为针对o365实例使用Azure AD身份验证,该工作正常。

我现在想使用该应用程序使用Graph API访问o365资源(例如我的日历)。在asp.net core 2.0中,我使用了here描述的方法来获取访问令牌,缓存它,并为任何图形请求检索它。它依赖于OpenIdConnect事件(OnAuthorizationCodeReceived)来获取访问代码。

我没有在使用asp.net core 2.1的新AddAzureAd方法上看到任何类似的事件。现在有一种获取用于Graph调用的令牌的新方法吗?

1 个答案:

答案 0 :(得分:0)

这一直是一个复杂的问题,根据您的情况(需要的权限,您也在谈论的工作量),可能需要调整此答案。 首先,在这里,你有代码授权和id_token。实现您想要实现的目标的最简单方法(可能不是用户体验方面最好),它可以临时存储id令牌。 (让我们在令牌缓存中说)

services.AddAuthentication()
    .AddOpenIdConnect(opts =>
    {
        opts.Events = new OpenIdConnectEvents
    {
        OnAuthorizationCodeReceived = ctx =>
        {
            return Task.CompletedTask;
        }
    };
    });

您可以看到一个示例here,您还需要确保使用正确的permissions配置您的应用程序,并且您应该准备好了!