问题标签 [azure-ad-graph-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
494 浏览

azure - 访问资源时以编程方式创建的 azure 应用程序未经授权的 401

我必须代表用户注册 azure 应用程序。我使用 Azure Graph API 执行以下操作:

  1. 创建具有所需资源的应用程序
  2. 为注册的应用程序创建服务主体
  3. 为具有所需范围的服务主体创建OAuth2PermissionGrant 实体

之后,我成功获得了创建 upp 的 access_token。但不幸的是,当我尝试使用该令牌访问 O365 资源时,返回了 401 Unauthorized。没有任何 json 错误!!

HTTP/1.1 401 Unauthorized
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 0
Expires: -1
Server: Microsoft-IIS/8.5
Server: Microsoft-IIS/8.5
WWW-Authenticate: Bearer
X-AspNet-Version : 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ASP.NET
日期: Thu, 10 Dec 2015 11:58:59 GMT

... 而已!

接下来我去了 Azure 门户 - 一切正常。经过几次实验后,我注意到 access_token 在通过门户(甚至是外观)进行任何更改后变得有效。

所以我使用 JWT 解码器比较了令牌,发现没有包含 Scopes:

图片 - 门户更改前的令牌

图片 - 门户更改后的令牌

我还注意到 OAuth2PermissionGrant 实体在更改后被覆盖。


我使用了以下网络资源和库:

  1. 授权库:ADAL
  2. 用于访问 Graph API 的库:www.nuget.org/packages/Microsoft.Azure.ActiveDirectory.GraphClient
  3. 可以在此处找到 GraphClient 示例的完整列表 github.com/Azure-Samples/active-directory-dotnet-graphapi-console/blob/master/GraphConsoleAppV3/Program.cs

下面我附上了以编程方式创建应用程序的代码。我也可以附上提琴手日志和其他信息。

0 投票
1 回答
1439 浏览

azure - 非空属性的 Azure AD 图形 API 查询

如何在我们的 Azure AD 中查询 graph.windows.net 中确实设置了电子邮件属性的帐户?我要求查询字符串,甚至更好的是使用 ActiveDirectoryClient 的 C# 语句。

似乎不可能使用 $filter=email neq '' 或其他类似的 $filter 构造来排除没有设置电子邮件属性的用户。

0 投票
1 回答
1830 浏览

azure - Azure Graph API C# 客户端 - 无法获取用户的 Manager 对象

当我尝试检索用户时,用户的管理器对象始终为空。但我得到“objectId”,这是相应的经理(用户)GUID。我可以使用此 GUID 从 API 调用或https://graphexplorer.cloudapp.net获取管理器,但不能使用 C# 从 Graph 客户端获取(即使是 2.1.0 版本:https ://www.nuget.org/packages/Microsoft .Azure.ActiveDirectory.GraphClient)。

有人可以指导我吗?提前致谢。

0 投票
1 回答
1149 浏览

azure - 用于访问 Azure 服务的临时安全凭据

我正在 Azure 中寻找类似于AWS 安全令牌服务 (STS) 临时安全凭证的功能,以允许联合用户访问 Azure 服务。我们在我们的应用程序中支持多个身份提供者(Amazon 帐户、Microsoft 帐户、LinkedIn、Google、Facebook、Github 和 Twitter)。我们计划在未来增加对更多身份提供者的支持。

一旦用户使用这些身份提供者之一登录,我们希望允许代表这些用户访问各种 Azure 服务。AWS 可以选择代表位于外部身份提供商 (IDP) 中的联合用户提供临时访问令牌。

Azure AD 是否有任何类似的功能,它基于现有令牌(来自外部 IDP)生成令牌并允许访问 Azure 服务?

谢谢高拉夫

0 投票
1 回答
1111 浏览

office365 - Microsoft Graph API 潜在限制

我编写了一个控制台应用程序,用于将文件上传到 Office 365 统一组。我正在使用 Microsoft Graph API 来获取对组下驱动器的引用,然后上传文件。我正在使用 Microsoft.IdentityModel.Clients.ActiveDirectory NuGet 包进行身份验证。这个应用程序需要上传几千个文件,我相信我遇到了一些限制问题。

我可以毫无问题地上传大约 4000 个文件,但之后我开始收到 401“未经授权”的响应。起初我以为这是令牌过期问题,但如果遇到 401,我更改了代码以获取全新的令牌。我最初并没有怀疑限制问题,因为我没有收到 429 响应错误代码(请参阅:https ://github.com/OfficeDev/microsoft-graph-docs/blob/master/content/overview/errors.md ) .

是否有可能在一段时间内对 Microsoft Graph API 的请求过多可能会导致 401 Unauthorized 错误响应消息?

我正在按顺序(而不是并行)发出上传请求,并且在每个请求之间添加了 1 秒的暂停。

0 投票
1 回答
1844 浏览

c# - 使用图形 API 在 Azure Active Directory 中创建应用程序失败

我正在尝试使用 Azure Active Directory Graph API(带有 Azure GraphClient nuget 包)在 Azure AD 中创建一个新应用程序。

我已经使用现有的 AAD 应用程序进行了身份验证,因此我对目录具有写访问权。

但是,在创建新的应用程序对象时,Azure Graph API 会返回此错误:

它没有说明哪个属性具有重复的 id 或声明值 - 错误消息中有两个空格,就好像名称丢失一样。

创建 Application 对象的代码是这样的:

我错过了财产吗?似乎没有任何非唯一属性,并且应用程序是使用唯一名称创建的。

0 投票
2 回答
483 浏览

azure - Azure Active Directory:使用 Graph API 获取组声明时出现“禁止”错误

我正在使用 Azure Active Directory 租户和 Graph API 来获取 groupclaims objectID。但是,它在运行时因禁止错误而失败。

我对另一个 Azure Active Directory 租户(创建近 4 个月)使用了相同的代码,它运行良好。我已按照同上方法在 Azure 管理门户中创建新的 Azure Active Direct 租户并仔细检查了配置详细信息。

甚至,我已经使用相同的步骤创建了很多次新的Azure Active Directory租户,但仍然出现 Forbidden 错误。

一般来说,禁止错误是由于服务器上缺少权限,但另一个活动目录租户工作正常(这也是我 4 个月前创建的)。工作 AAD 租户和新创建的租户之间没有任何配置更改。

  1. AAD 的创建最近有什么变化吗?
  2. 我正在使用 Microsoft Active Directory,我们是否需要 MSIT 团队在服务器端进行任何配置更新?

遵循以下步骤:https ://github.com/Azure-Samples/active-directory-dotnet-webapp-groupclaims

有人可以帮我解决这个问题。

谢谢,

普拉迪普

0 投票
2 回答
595 浏览

powershell - Azure AD 报告 API:门户和 API 之间的结果不一致

我正在使用Azure AD 报告 API PowerShell 入门示例,其中包含一些额外的步骤来利用 nextLink 并获取我的日期范围内的所有数据。数据始终缺少最旧的 24 小时日志。我可以通过门户或通过扩展我的查询的日期范围(然后返回该范围中最旧的 24 小时以外的所有时间)来查看日志。

示例请求:

不确定它是否值得自己发布,但查询也没有返回更新属性的数据。有没有人能够为他们的租户解决这些问题?

0 投票
1 回答
3178 浏览

api - 使用客户端凭据流以编程方式在 Azure AD 中添加应用程序

为了与 Azure API 管理一起使用,我尝试以编程方式将应用程序添加到 Azure Active Directory (AAD),在我的例子中是使用 Graph API。

我的场景如下:为了保护我想使用 Azure API 管理管理的 Web API,我想利用 AAD 的 OAuth 功能来完成有关身份验证和颁发 JWT 令牌的繁重工作,然后只使用 validate-jwt 策略验证 Azure API 管理中的一切正常。这样做的好处是我可以或多或少地在后端服务中省略身份验证。

只要我在 Azure AD 中为使用 Web 应用程序创建了一个应用程序,就可以正常工作,但这必须从 Azure 门户手动完成;Azure APIm 不会自动执行此操作。

现在我要尝试自动完成任务:我想将 APIm 中的 API 订阅委托给我正在编写的其他一些 Web 应用程序,然后我想利用 Graph API 在 Azure 中创建一个应用程序AD 并授予 API 应用程序的权限。

我尝试做的第一件事是让第三个应用程序(我的服务应用程序)对 Azure AD 中的 Windows Azure Active Directory 应用程序拥有完整的应用程序权限;这让我的应用程序可以使用 Graph REST API 访问 AAD。我设法使用 client_credentials 授权(来自 login.microsoft.com)获得访问令牌,但是这个令牌不允许我做一个POSTon https://graph.windows.net/(my AAD ID)/applications?api-version=1.5

我发现(https://msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scopes)即使我授予Directory.ReadWrite.All权限,应用程序(仅限应用程序)将无法创建或更新应用程序:

注意:特别不包括上面未列出的实体的创建或更新。这包括:Application、Oauth2PermissionGrant、AppRoleAssignment、Device、ServicePrincipal、TenantDetail、域等。

我尝试的下一件事是资源所有者密码授予 ( grant_type=password),另外传递我自己的凭据,以便我可以在 Graph API 中模拟自己。现在,我POSTapplications终点成功了。

我的底线问题是:我是否可以向我的应用程序授予足够的权限,以便我可以使用客户端凭据流以编程方式添加应用程序,而不是代表用户的任何流?如果是这样,它是如何完成的?

0 投票
1 回答
1067 浏览

azure - Azure Active Directory 对象权限

我有一个 Azure Active Directory 应用程序(和关联的服务主体)。该服务主体需要能够在 Azure Active Directory 组中添加和删除成员......所以我在应用程序权限下添加了读取和写入目录数据:

在此处输入图像描述

我有代码使用客户端 ID 和客户端密钥来获取身份验证令牌并使用 Azure Graph API 执行这些操作。

但是,这种许可范围太广了。我需要应用程序/服务主体只能从特定组(不是全部)添加和删除成员......而不是执行其他类型的操作的能力。

有没有办法做到这一点?

谢谢你。