当前位置: 首页 > 知识库问答 >
问题:

获取O365用户的后台作业获得未经授权的异常

邓鸿雪
2023-03-14

我们正在尝试创建一个微服务模块,其工作是每天一次获取使用Microsoft Graph API(/users/)的所有用户,并对他们做一些事情。

然后我们得到了来自Azure Blade的管理同意。

var confidentialClientApplication = new ConfidentialClientApplication(
            this.applicationId,
            this.authority,
            this.redirectUri,
            this.credential,
            new TokenCache(),
            new TokenCache());

            var result = await confidentialClientApplication.AcquireTokenForClientAsync(new[] { "https://graph.microsoft.com/.default" });
            return result.AccessToken;
new GraphServiceClient(new DelegateAuthenticationProvider(
            async requestMessage =>
            {
                var graphToken = await this.graphAuthProvider.GetAccessTokenAsync();

                // Append the access token to the request
                requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", graphToken);
            }));

下面是我获得的令牌的有效负载(部分信息省略)

{
 "aud": "https://graph.microsoft.com",
 "iss": "https://sts.windows.net/<tenant_id>/",
 "iat": 1527833423,
 "nbf": 1527833423,
 "exp": 1527837323,
 "aio": "Y2dgYKgxbYzssLvLWfve6WbgtsdWAA==",
 "app_displayname": "<app_name>",
 "appid": "<app_id>",
 "appidacr": "1",
 "e_exp": 262800,
 "idp": "https://sts.windows.net/<tenant_id>/",
 "oid": "<subject_id>",
 "sub": "<subject_id>",
 "tid": "<tenant_id>",
 "uti": "-XvIySkmuUOuqmQI0l8CAA",
 "ver": "1.0"
}

然后尝试让用户访问,我收到一个错误,说应用程序没有访问该资源的权限。

共有1个答案

狄玉书
2023-03-14

发现了问题所在。结果我添加的是委托权限,而不是应用程序权限。

 类似资料:
  • 本文向大家介绍在SAP ABAP中获取未经授权的异常,包括了在SAP ABAP中获取未经授权的异常的使用技巧和注意事项,需要的朋友参考一下 要解决此问题,您需要在代码中添加try / catch响应。如果您不包括授权标头,则会导致服务器出现错误401。

  • 获取企业授权 PDF版下载 为了保证信息安全,所有API(包括第三方API及通讯录、发消息等所有API)调用需要验证来源域名。只有在应用开发信息中填写的合法授信域名才能合法调用。 获取第三方应用凭证 该API用于获取第三方应用凭证(suite_access_token)。 由于应用提供商可能托管了大量的企业,其安全问题造成的影响会更加严重,本接口除了合法来源IP校验之外,还额外需要suite_ti

  • 为了请求访问令牌,客户端从资源所有者获得授权。授权表现为授权许可的形式,客户端用它请求访问令牌。OAuth定义了四种许可类型:授权码、隐式许可、资源所有者密码凭据和客户端凭据。它还提供了扩展机制定义其他许可类型。

  • 我使用谷歌驱动器存储我的文件在那里,但我需要获得直接下载链接的用户谁没有通过API授权,如获得链接功能在谷歌驱动器为每个人。 webContentLink在没有access_token的情况下无法工作,它会给我403个错误。还有别的办法吗?像可能做“获取链接”的API和获取链接的功能,这将为每个人与这个链接工作?

  • 我使用了以下来自google的示例https://developers.google.com/identity/sign-in/web/server-side-flow到目前为止,我能够实现以下步骤: 用户在客户端(浏览器)进行身份验证。 代码返回并保存在服务器数据库中。 请求身份验证代码令牌时,响应异常:401未授权 我检查了以下内容: 接口已启用 在 https://developers.go

  • 以下是收到的错误消息: “ErrorMessage”:“401未经授权:[{\r\n\”错误“:{\r\n \”代码\“:\”invalidauthenticationToken\“,\r\n\”消息\“:\”访问令牌验证失败。\“,\r\n\”innererror\“:{\r\n \”日期\“:”2020-06-12T11:49:22\“,\r\n\”请求-id\“:”7988BD2E-3274