【问题标题】:Obtaining bearer access token to access o365 resource, using Azure AD auth使用 Azure AD auth 获取承载访问令牌以访问 o365 资源
【发布时间】:2018-05-19 05:47:56
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    这一直是一个复杂的问题,根据您的情况(所需的权限、您所说的工作负载),可能需要调整此答案。 首先,在这里,您有代码授权和 id_token。实现您想要实现的目标的最简单方法(就用户体验而言可能不是最好的)它是临时存储 id 令牌。 (假设在令牌缓存中)

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

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

    【讨论】:

    • 感谢您的回答 - 我使用的是与您使用 core 2.0 的答案类似的东西,但我现在使用的是 2.1 AddAzureAd 方法(而不是 AddOpenIdConnect 方法),但这似乎没有其 options 参数上的 events 方法。所以我想知道是否有一种新的方法来获取验证码/令牌,或者我是否需要恢复使用 AddOpenIdConnect 方法
    • 你看过了吗? github.com/microsoftgraph/aspnetcore-connect-sample/blob/master/… 我相信现在是 IGraphAuthProviderIGraphSdkHelper 将为您准备好 GraphClient。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2021-11-13
    • 2020-12-21
    • 2018-01-15
    相关资源
    最近更新 更多