标签: azure-ad-graph-api

使用 Microsoft Graph 的组织层次结构

我正在寻找组织结构图和相关作品的工作。为了构建相同的内容,我希望利用Microsoft Graph进行数据检索。

问题1

我没有看到允许我(向上)拉动整个层次结构的直接端点。因此,唯一可用的选项是需要编写递归代码来从特定用户开始向上拉动层次结构,即获取当前用户的经理,然后获取经理的经理,依此类推,直到完成层次结构。

问题2

此外,还有其他选项,例如 Azure AD API。但是,MS 一般建议利用 MS Graph 端点,而不是特定的以产品为中心的端点。请求对此的想法。

azure azure-ad-graph-api microsoft-graph-api

2
推荐指数
1
解决办法
5860
查看次数

Microsoft graph 无法读取 JSON 请求负载

我正在尝试在 php 中使用 microsoft graph 创建订阅,但是我目前无法看到出了什么问题。

该代码在以下位置被破坏:

protected $http_subscribe = "https://graph.microsoft.com/v1.0/subscriptions";

public function getSubscriptions()
{
    if(empty($this->token)) {
        dd('no token supplied'); //some debugging
    }

    $date = $this->endTimeDate->format('Y-m-d'); //This is Carbon date

    $time = $this->endTimeDate->format('H:i:s.u');

    $response = $this->client->request('POST', $this->http_subscribe, [
        'headers' => [
            'Authorization' => 'Bearer ' . $this->token,
            'Content-Type' => "application/json"
        ], 'form_params' => [
            "changeType" => "created,updated",
            "notificationUrl" => "https://website.test/notify",
            "resource" => "me/mailFolders('Inbox')/messages",
            "expirationDateTime" => $date.'T'.$time,
            "clientState" => "secretClientValue"
        ]
    ]);

    dd($response);
}
Run Code Online (Sandbox Code Playgroud)

我得到的完整错误是:

"""
{\r\n
  "error": {\r\n
    "code": "BadRequest",\r\n …
Run Code Online (Sandbox Code Playgroud)

php laravel guzzle azure-ad-graph-api microsoft-graph-api

2
推荐指数
1
解决办法
4278
查看次数

Microsoft Graph API:通过应用程序权限限制 calendar.readWrite 和审核邮箱访问的范围

我们正在使用 AD 部署的守护程序应用程序,该应用程序对 Office 365 中的用户日历具有完全读/写访问权限,以从 Graph API 获取会议通知。由于持续存在的问题以及 MS 不赞成使用 EWS,我们已经放弃了 EWS。

目前似乎没有办法将 Office 365 Calendar.ReadWrite 权限的范围从组织级别限制到组/用户。

财富 500 强客户担心我们的应用程序可以访问其邮箱内的所有敏感数据,并且尚未准备好为 Calendar.ReadWrite 权限提供管理员同意。我已经解释了所有现有的安全措施,例如在 AD 中注册服务时使用应用程序身份证书、管理员同意要求,以便我们可以访问日历并获取/设置信息,并且通信是安全的,因为它来自 Office 365托管在 Azure 中的图形 API 到我们的应用程序,该应用程序也托管在 Azure 中。

作为 AD 管理员,他们可以随时拒绝对应用程序的同意,但客户认为,万一发生安全事件,为时已晚。

尽管如此,这样的组织还是不愿意的。

有没有办法限制calendar.ReadWrite权限的范围?

我们可以使用 Office 365 管理 API 审核特定用户邮箱的 MS Graph API 调用吗?

我们是否可以禁用特定用户邮箱的 MS Graph API 调用,类似于 EWS 在邮箱上具有 EWSEnabled 属性的方式?

我可以在 Office 365 的安全性和合规性管理部分下设置任何策略,以便从交换管理端更好地控制此类应用程序吗?

office365 azure-active-directory azure-ad-graph-api exchange-server-2016 microsoft-graph-api

2
推荐指数
1
解决办法
2091
查看次数

如何在microsoft graph api中获取用户日历事件

我已在某个组织的 azure 门户中注册了一个应用程序。通过 graph api,我可以使用 graph api 访问租户中存在的所有用户graph.microsoft.com/v1.0/users

这是我用来获取单个用户的日历的过程:

  1. graph.microsoft.com/v1.0/users。
  2. id/userPrincipalName用户的副本。
  3. graph.microsoft.com/v1.0/users/id/calendars/events。

在此过程中我收到了 403 禁止。

请告诉我我的方法是否正确。

azure-ad-graph-api

2
推荐指数
1
解决办法
1万
查看次数

有没有办法在Azure AD B2C中使用GRAPH API批量创建或删除用户

我正在尝试用 C# 制作一个控制台应用程序,希望通过它将超过 100000 个用户迁移到 Azure AD B2C。

为此,我们使用 Graph API。

我当前的方法为每个 API 调用创建一个用户帐户,并且需要超过 12 个小时才能迁移大约 50000 个用户。

为了减少总时间,我想批量发送数据,而不是使用 API 逐一发送数据。但是,我无法找到任何解决方案。

是否有可用于批量创建用户的API端点。请帮忙。

另外,如果我想批量删除这些用户。可以这样做吗?

以下是我用于实现解决方案的一些 Microsoft 文档参考。

https://learn.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-user-migration?tabs=applications https://learn.microsoft.com/en-us/previous -versions/azure/ad/graph/api/users-operations#CreateLocalAccountUser

createuser azure-ad-graph-api azure-ad-b2c

2
推荐指数
1
解决办法
3117
查看次数

从 C# 服务中使用 Graph API 获取日历计划

我需要使用 Microsoft Graph API 通过 .NET Core Windows 服务从日历中获取忙/闲时间表。根据微软自己的文档,我应该使用以下内容:

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var schedules = new List<String>()
{
    "adelev@contoso.onmicrosoft.com",
    "meganb@contoso.onmicrosoft.com"
};

var startTime = new DateTimeTimeZone
{
    DateTime = "2019-03-15T09:00:00",
    TimeZone = "Pacific Standard Time"
};

var endTime = new DateTimeTimeZone
{
    DateTime = "2019-03-15T18:00:00",
    TimeZone = "Pacific Standard Time"
};

var availabilityViewInterval = 60;

await graphClient.Me.Calendar
    .GetSchedule(schedules,endTime,startTime,availabilityViewInterval)
    .Request()
    .Header("Prefer","outlook.timezone=\"Pacific Standard Time\"")
    .PostAsync();
Run Code Online (Sandbox Code Playgroud)

我已经使用 Azure 门户注册了一个新应用程序,并为其授予了 Calendars.Read 权限。

我的 C# 代码:

try
{
    IConfidentialClientApplication clientApplication = …
Run Code Online (Sandbox Code Playgroud)

c# .net-core azure-ad-graph-api microsoft-graph-api

2
推荐指数
1
解决办法
588
查看次数

使用 Graph SDK 在 Sharepoint Drive 中的特定目录中创建文件夹

如何仅使用给定的 Url 使其成为现实,以及是否可能,idk?

我正在尝试做什么:

根据字符串在驱动器中的特定位置创建文件夹。
该字符串由 3 部分组成(每个部分代表文件夹简单!)例如, mystring = "Analyse_General_Theory" ,驱动器中的路径应类似于:Analyse/General/Theory

所以 :

我的解决方案的想象力就是这样:)

将我的 stringUrl 传递给构建请求,然后发布我的文件夹

stringUrl = "https://CompanyDomin.sharepoint.com/sites/mySite/SharedFolders/Analyse/General/Theory"
Run Code Online (Sandbox Code Playgroud)

然后

await graphClient.Request(stringUrl).PostAsync(myLastFolder) !!! 
Run Code Online (Sandbox Code Playgroud)

所以才会有这样的结果!

分析/一般/理论/myLastFolder

有这样的东西吗?或者可能类似于这种方法?

c# azure-ad-graph-api microsoft-graph-files

2
推荐指数
1
解决办法
8822
查看次数

MS Graph API 不会从 Azure AD B2C 返回用户的电子邮件地址

当我使用 Microsoft Graph API 从 Azure AD B2C 获取用户时,用户注册的电子邮件地址没有出现在返回的 JSON 中。尽管 SO 中的帖子建议电子邮件地址应存在于邮件(otherMails 或 signInNames)以外的其他字段中,但接收到的 JSON 不包含任何具有预期电子邮件地址的字段。这是我为测试用户运行的请求(敏感数据被屏蔽):

GET https://graph.microsoft.com/v1.0/users/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Authorization: Bearer xxxxxxxxx
Content-Type: application/json
Run Code Online (Sandbox Code Playgroud)

响应中的 JSON 是:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
  "businessPhones": [],
  "displayName": "unknown",
  "givenName": "some",
  "jobTitle": null,
  "mail": null,
  "mobilePhone": null,
  "officeLocation": null,
  "preferredLanguage": null,
  "surname": "user",
  "userPrincipalName": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@xxxxx.onmicrosoft.com",
  "id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,当我在 Azure AD B2C 中看到用户时,电子邮件地址显示在用户列表页面的“用户名”列下:

在此处输入图片说明

当我查看用户的个人资料时,电子邮件地址也会显示在“用户主体名称”字段下:

在此处输入图片说明

电子邮件来自哪里,我如何使用 MS Graph API 获取它?

azure-active-directory azure-ad-graph-api azure-ad-b2c microsoft-graph-api

2
推荐指数
1
解决办法
853
查看次数

缺少客户端密钥或客户端证书

MsalClientException:IDW10104:客户端密钥和客户端证书都不能为空或空格,并且在调用 Web API 时,Web 应用程序的配置中只能包含其中之一。例如,在 appsettings.json 文件中。

Microsoft.Identity.Web.MicrosoftIdentityOptionsValidation.ValidateEitherClientCertificateOrClientSecret(string clientSecret, IEnumerable<CertificateDescription> cert)
Microsoft.Identity.Web.TokenAcquisition.BuildConfidentialClientApplicationAsync()
Microsoft.Identity.Web.TokenAcquisition.GetOrBuildConfidentialClientApplicationAsync()
Microsoft.Identity.Web.TokenAcquisition.AddAccountToCacheFromAuthorizationCodeAsync(AuthorizationCodeReceivedContext context, IEnumerable<string> scopes)
Microsoft.Identity.Web.MicrosoftIdentityWebAppAuthenticationBuilder+<>c__DisplayClass11_1+<<WebAppCallsWebApiImplementation>b__1>d.MoveNext()
Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.RunAuthorizationCodeReceivedEventAsync(OpenIdConnectMessage authorizationResponse, ClaimsPrincipal user, AuthenticationProperties properties, JwtSecurityToken jwt)
Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRemoteAuthenticateAsync()
Run Code Online (Sandbox Code Playgroud)

通过 Azure AD 成功登录后会发生这种情况。我也传递了客户端密钥(通过用户密钥和 appSettings)。作为源代码参考,我使用以下示例项目:

https://github.com/damienbod/AspNetCoreUsingGraphApi

azure-active-directory azure-ad-graph-api asp.net-core

2
推荐指数
1
解决办法
1万
查看次数

使用 Java 将代理设置添加到 Microsoft Graph 客户端

我正在尝试实现 GraphClient,下面是一个运行良好的示例代码...

   ClientCredentialProvider authProvider = 
              new ClientCredentialProvider(clientId,
                      scopes,
                      clientSecret,
                      b2cTenant,
                      endpoint);
    
    IGraphServiceClient graphClient = graphClient = GraphServiceClient.builder()
                .authenticationProvider(authProvider)
                .buildClient();
Run Code Online (Sandbox Code Playgroud)

这工作正常......但在某些情况下,从运行代码的地方,有一个代理,所以我需要设置代理来连接到互联网。我需要设置代理并将其传递给 graphClient 以某种方式告诉通过代理进行调用。

我试图找到一份文件,但找不到任何文件,我得到了这个......

ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress(proxyUrl, proxyPort));
proxyOptions.setCredentials(proxyUser, proxyPassword);

final UsernamePasswordCredential usernamePasswordCredential = new UsernamePasswordCredentialBuilder()
                    .clientId(clientId)
                    .username(username)
                    .password(password)
                    .httpClient(HttpClient.createDefault(new HttpClientOptions().setProxyOptions(proxyOptions)))
                    .build();
Run Code Online (Sandbox Code Playgroud)

但问题是“ProxyOptions”不在 Maven 中,我不确定它属于哪个库。

任何人都可以提出一个想法。

java proxy azure-ad-graph-api azure-ad-b2c microsoft-graph-api

2
推荐指数
1
解决办法
2342
查看次数