如何通过Graph API将用户添加到租户?

时间:2016-06-14 18:28:34

标签: azure office365

我已使用合作伙伴中心REST API为租户提供订单/订阅。现在我想开始为刚刚创建的租户配置域和用户。我的第一步是使用图谱API https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/users-operations获取用户列表作为期望查看管理员帐户的测试。如果我在请求网址中传递了转销商帐户的域名,则会向我显示转销商用户。但是,当我放入我刚配置的帐户的域名时,我得到Invalid domain name in the request url.我正在使用转销商AD令牌来执行此操作。我很困惑,因为它让我可以选择指定域名,但我只能访问自己的域名。

我应该在这里使用什么证书?我尝试使用从配置中为管理员帐户生成的用户/密码,但在尝试从图谱API中获取AD令牌时,我得到unauthorized_client

3 个答案:

答案 0 :(得分:1)

很难直接解决您的问题,因为它们有点广泛,我需要有关您正在使用的各种租户,您的应用配置方式,应用权限等更多具体细节...... < / p>

但是我认为你可以遵循一些原则来帮助你调试你的问题。

  • 所有AAD身份验证都在特定租户的上下文中进行。这意味着每当您获得资源的访问令牌时,该令牌的范围仅限于租户的边界。
  • 要在租户环境中使用客户端应用程序进行身份验证,您必须在您尝试访问的租户中注册该应用程序(业务线应用程序/单租户),或者您必须使应用程序成为多租户,在这种情况下,您的应用应该能够在任何租户的环境中运行......如果发生了正确的配置。
  • 您的应用尝试运行的每个租户都必须拥有租户中提供的应用的服务主体。此服务主体在该租户的上下文中表示您的应用程序的标识,并充当存储您的应用程序在该租户的上下文中的权限的位置。通常情况下,此服务主体在该租户的用户同意将该应用程序用作登录体验的一部分后,将其配置到租户中。
  • 如果您尝试使用用户上下文(授权代码授予流程)来检索有关租户的详细信息,则必须确保该用户出现在您尝试查询的目录中。例如,用户U可以存在于其家庭租户T1中。如果您尝试使用该用户帐户查询另一个租户T2,您将收到描述该用户帐户不存在的任意数量的错误等。您可以通过在T2中为U创建一个来宾帐户来解决此问题,在这种情况下会有在T2中创建的全新用户对象,链接到T1中的原始用户对象。尽管如此,用户对象应始终存在于您要查询的租户中。
  • 如果您尝试使用T1和T2中的用户帐户登录应用程序,则需要确保指定要为其实际获取令牌的租户。默认情况下,如果使用公共端点,您将获得用户家庭租户的令牌。但是,只要您在发出请求时将其指定给我们的令牌服务,为二级租户获取令牌是完全有效的。
  • 最后,如果要对Graph API进行特定调用,则用于发出这些请求的客户端应用程序需要具有Graph API的正确权限。每个租户都需要在租户环境中单独同意该应用程序,以便为其应用程序提供正确的权限。

考虑到这些原则: 您在“unauthorized_client”中遇到的错误似乎是辅助租户中的应用程序配置问题。请确保首先使用来自二级租户的用户登录该应用程序,并确保该用户具有同意您的应用程序的正确权限(此处的租户管理员最好)。

对于第二个问题“请求网址中的域名无效”,请尝试使用一些提示here。 特别是:

  

使用myOrganization别名。此别名仅在使用OAuth授权代码授予类型(3条腿)身份验证时可用;也就是说,使用委派的权限范围时。别名不区分大小写。它取代了URL中的对象ID或租户域。使用别名时,Graph API从附加到请求的令牌中显示的声明中派生租户。以下URL显示如何使用此别名来解决租户的用户资源集合:   https://graph.windows.net/myorganization/users?api-version=1.6

我希望这能让您找到解决大多数问题的正确途径。

答案 1 :(得分:0)

沙盒帐户和Azure存在问题。访问沙盒的Azure管理门户并不简单,此时无法正常工作。我必须使用我的hotmail帐户创建一个免费的Azure帐户,然后将AD从新帐户链接到我的沙箱AD以绕过该错误。将新目录添加到新Azure帐户时,请选择“使用现有目录”,注销,然后登录要将其链接到的沙箱帐户。然后从新帐户创建您的应用。

在正确设置我的应用和新凭据后,我必须按照以下列出的说明启用事先同意:https://github.com/Microsoft/Partner-Center-Explorer

最后,我必须使用客户ID登录图谱API,但需要使用转销商凭据登录。

答案 2 :(得分:0)

scenarios on the Partner Center SDK website包含一个部分&#34;管理用户帐户并分配许可证&#34;在&#34;管理客户帐户&#34;部分。

这些示例包括创建用户和分配许可证以及指向控制台测试应用程序的链接。

另外,新版本的合作伙伴中心SDK刚刚可用here。它于7月5日发布。虽然我找不到官方更改历史记录,但我可以看到它包含一些新类,例如CustomerUser。您可能会发现使用该库更容易,而不是使用REST API(取决于您已经完成了多少工作)。