问题标签 [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.
azure - 访问资源时以编程方式创建的 azure 应用程序未经授权的 401
我必须代表用户注册 azure 应用程序。我使用 Azure Graph API 执行以下操作:
- 创建具有所需资源的应用程序
- 为注册的应用程序创建服务主体
- 为具有所需范围的服务主体创建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 实体在更改后被覆盖。
我使用了以下网络资源和库:
- 授权库:ADAL
- 用于访问 Graph API 的库:www.nuget.org/packages/Microsoft.Azure.ActiveDirectory.GraphClient
- 可以在此处找到 GraphClient 示例的完整列表 github.com/Azure-Samples/active-directory-dotnet-graphapi-console/blob/master/GraphConsoleAppV3/Program.cs
下面我附上了以编程方式创建应用程序的代码。我也可以附上提琴手日志和其他信息。
azure - 非空属性的 Azure AD 图形 API 查询
如何在我们的 Azure AD 中查询 graph.windows.net 中确实设置了电子邮件属性的帐户?我要求查询字符串,甚至更好的是使用 ActiveDirectoryClient 的 C# 语句。
似乎不可能使用 $filter=email neq '' 或其他类似的 $filter 构造来排除没有设置电子邮件属性的用户。
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)。
有人可以指导我吗?提前致谢。
azure - 用于访问 Azure 服务的临时安全凭据
我正在 Azure 中寻找类似于AWS 安全令牌服务 (STS) 临时安全凭证的功能,以允许联合用户访问 Azure 服务。我们在我们的应用程序中支持多个身份提供者(Amazon 帐户、Microsoft 帐户、LinkedIn、Google、Facebook、Github 和 Twitter)。我们计划在未来增加对更多身份提供者的支持。
一旦用户使用这些身份提供者之一登录,我们希望允许代表这些用户访问各种 Azure 服务。AWS 可以选择代表位于外部身份提供商 (IDP) 中的联合用户提供临时访问令牌。
Azure AD 是否有任何类似的功能,它基于现有令牌(来自外部 IDP)生成令牌并允许访问 Azure 服务?
谢谢高拉夫
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 秒的暂停。
c# - 使用图形 API 在 Azure Active Directory 中创建应用程序失败
我正在尝试使用 Azure Active Directory Graph API(带有 Azure GraphClient nuget 包)在 Azure AD 中创建一个新应用程序。
我已经使用现有的 AAD 应用程序进行了身份验证,因此我对目录具有写访问权。
但是,在创建新的应用程序对象时,Azure Graph API 会返回此错误:
它没有说明哪个属性具有重复的 id 或声明值 - 错误消息中有两个空格,就好像名称丢失一样。
创建 Application 对象的代码是这样的:
我错过了财产吗?似乎没有任何非唯一属性,并且应用程序是使用唯一名称创建的。
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 租户和新创建的租户之间没有任何配置更改。
- AAD 的创建最近有什么变化吗?
- 我正在使用 Microsoft Active Directory,我们是否需要 MSIT 团队在服务器端进行任何配置更新?
遵循以下步骤:https ://github.com/Azure-Samples/active-directory-dotnet-webapp-groupclaims
有人可以帮我解决这个问题。
谢谢,
普拉迪普
powershell - Azure AD 报告 API:门户和 API 之间的结果不一致
我正在使用Azure AD 报告 API PowerShell 入门示例,其中包含一些额外的步骤来利用 nextLink 并获取我的日期范围内的所有数据。数据始终缺少最旧的 24 小时日志。我可以通过门户或通过扩展我的查询的日期范围(然后返回该范围中最旧的 24 小时以外的所有时间)来查看日志。
示例请求:
不确定它是否值得自己发布,但查询也没有返回更新属性的数据。有没有人能够为他们的租户解决这些问题?
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)获得访问令牌,但是这个令牌不允许我做一个POST
on 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 中模拟自己。现在,我POST
的applications
终点成功了。
我的底线问题是:我是否可以向我的应用程序授予足够的权限,以便我可以使用客户端凭据流以编程方式添加应用程序,而不是代表用户的任何流?如果是这样,它是如何完成的?