【问题标题】:Invalid token error when calling Microsoft graph from Web API从 Web API 调用 Microsoft 图形时出现无效令牌错误
【发布时间】:2018-05-18 18:40:02
【问题描述】:

我需要做的是从 C# Web API 调用 Microsoft graph。这基本上就是我的方法的样子:

var clientCredential = new ClientCredential(clientId, clientSecret);
AuthenticationContext context = new AuthenticationContext(authority);
AuthenticationResult authenticationResult = context.AcquireToken(clientId, clientCredential);
if (authenticationResult == null)
{
    throw new InvalidOperationException("Failed to obtain the token");
}
return authenticationResult;

我通过这个电话收到的是:


然后我的想法是调用 microsoft graph 传递这个令牌(我什至不能 100% 确定这是实现隐式流的正确方法)......但之后我收到“无效令牌”错误.

谁能告诉我我在哪里做错了? 非常感谢!

【问题讨论】:

    标签: c# azure oauth-2.0 sharepoint-online


    【解决方案1】:

    你的问题是你获取令牌的方式。

    这应该是:

    context.AcquireToken("https://graph.microsoft.com", clientCredential);
    

    第一个参数是您要为其获取令牌的 API 的资源 URI。

    这也不是隐式流程,它是客户端凭据流程,应用程序在其中使用应用程序权限访问 API。

    【讨论】:

    • 它有效!对不起,我对这个世界完全陌生 :) 只有一个问题...为了从我的 webapi 访问我的 AAD 组,这是正确的流程,对吗?
    • 一如既往,视情况而定。当您没有可以访问数据的登录用户时,通常会使用此流程。如果您的用户确实具有访问权限,则最好使用委派权限和其中的一个流程。应用程序权限有效地赋予了您的 API 组织范围的权限,因此除非必要,否则我会尽量避免使用它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2023-03-04
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多