当更改通知进入时,如何从其他用户的Subscription webhook端点向Microsoft Graph发出经过身份验证的请求?

问题描述 投票:1回答:1

我正在使用Azure AD身份验证,通过Azure AD应用程序(为组织/学校和个人帐户设置)和用户通过网站上的标准OpenConnect方案进行授权。

我还有一个Azure Web服务,它可以监听各种事物的更改通知(使用相同的Client / Secret / Tenant = common),例如Contacts和Events。这一切都很好,但是,当(例如)创建或更新新的联系人时,我需要使用Graph SDK来获取实际的联系人并更新辅助数据存储。

现在我使用典型的DelegateAuthenticationProvider但是访问其他用户的联系人似乎总是存在问题,因为我通常得到类似“令牌不包含权限或权限无法理解”的内容。

var graphClient = new GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) =>
{
    var accessToken = GetAccessToken().Result;

    requestMessage
        .Headers
        .Authorization = new AuthenticationHeaderValue("bearer", accessToken);

    return Task.FromResult(0);
}));

return graphClient;

看起来这个创建的委托访问令牌应该能够获取实际的联系人,因为它在Scopes中设置并且用户已经接受了。

关于我需要采取哪些不同方式来访问其他用户的任何想法直接从服务中获取联系人?

c# microsoft-graph microsoft-graph-sdks
1个回答
0
投票

您需要获取对租户的应用程序访问权限或请求委派的offline_access范围。

如果您使用offline_access,您将收到一个名为refresh_token的额外令牌。您需要为每个用户存储此信息,并在收到通知并需要调用Graph时使用它来获取新的access_token。有关详细说明,请参阅文档中的Use the refresh token to get a new access token

© www.soinside.com 2019 - 2024. All rights reserved.