C# 使用Azure AD auth获取承载访问令牌以访问o365资源
我正在使用bog标准,file->new Asp.Net核心Web应用程序(Razor Pages)项目,并将其配置为对o365实例使用Azure AD身份验证,效果很好 我现在想使用该应用程序使用Graph API访问o365资源(例如我的日历)。在asp.net core 2.0中,我使用所描述的方法获取访问令牌,缓存它,并为任何图形请求检索它。它依赖OpenIdConnect事件(OnAuthorizationCodeReceived)获取访问代码C# 使用Azure AD auth获取承载访问令牌以访问o365资源,c#,azure-active-directory,microsoft-graph-api,asp.net-core-2.1,C#,Azure Active Directory,Microsoft Graph Api,Asp.net Core 2.1,我正在使用bog标准,file->new Asp.Net核心Web应用程序(Razor Pages)项目,并将其配置为对o365实例使用Azure AD身份验证,效果很好 我现在想使用该应用程序使用Graph API访问o365资源(例如我的日历)。在asp.net core 2.0中,我使用所描述的方法获取访问令牌,缓存它,并为任何图形请求检索它。它依赖OpenIdConnect事件(OnAuthorizationCodeReceived)获取访问代码 在使用asp.net core 2.1的
在使用asp.net core 2.1的新AddAzureAd方法上,我没有看到任何类似的事件。现在是否有一种新的方法来获取用于图形调用的令牌?这一直是一个复杂的问题,根据您的场景(所需的权限、您正在谈论的工作负载),可能需要调整此答案。 首先,在这里,您有代码授权和id_令牌。实现您想要实现的目标的最简单方法(就用户体验而言可能不是最好的)是临时存储id令牌。(比如在令牌缓存中)
您可以看到一个示例,您还需要确保您的应用程序配置了正确的配置,并且您应该准备就绪 感谢您的回答-我在使用Core2.0时使用了与您的回答类似的东西,但我现在使用的是2.1 AddAzureAd方法(而不是AddOpenIdConnect方法),但它的options参数上似乎没有events方法。因此,我想知道是否有一种新的方法来获取身份验证代码/令牌,或者是否需要恢复使用AddOpenIdConnect方法。您看过了吗?我相信现在是
IGraphAuthProvider
和IGraphSdkHelper
为您准备好了GraphClient。
services.AddAuthentication()
.AddOpenIdConnect(opts =>
{
opts.Events = new OpenIdConnectEvents
{
OnAuthorizationCodeReceived = ctx =>
{
return Task.CompletedTask;
}
};
});