微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 OAuth 和刷新访问令牌对 EWS WCF 服务进行身份验证

如何解决使用 OAuth 和刷新访问令牌对 EWS WCF 服务进行身份验证

我正在尝试使用 OAuth 身份验证从我的 WCF 服务调用 Exchange Web 服务 (EWS) 端点。 我已在 Azure 门户上注册了该应用,并且能够使用访问令牌生成和验证它。

我的问题是关于如何刷新 WCF 服务中的令牌。似乎访问令牌有一个小时的有效期。

// Using Microsoft.Identity.Client 4.22.0
var cca = ConfidentialClientApplicationBuilder
    .Create(ConfigurationManager.AppSettings["appId"])
    .WithClientSecret(ConfigurationManager.AppSettings["clientSecret"])
    .WithTenantId(ConfigurationManager.AppSettings["tenantId"])
    .Build();

// The permission scope required for EWS access
var ewsScopes = new string[] { "https://outlook.office365.com/.default" };

//Make the token request
var authResult = await cca.AcquiretokenForClient(ewsScopes).ExecuteAsync();

请按照以下链接进行操作。 https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-authenticate-an-ews-application-by-using-oauth

谢谢

解决方法

在您的 WCF 客户端中,您想要执行类似 How to add a custom HTTP header to every WCF call? 的操作,因此您有一段代码在发出任何调用 AcquireTokenForClient 的请求之前运行,该请求应使用令牌应用程序缓存(因此它将为您提供当前令牌(如果有效)或获取新令牌(如果过期)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。