通过Microsoft Graph API在Azure AD中邀请用户无效

2 azure-active-directory microsoft-graph

以下是我在Azure AD中邀请用户使用的代码。

我收到“未经授权”的回复。我不确定缺少哪些权限/设置。有谁有主意。

string accessToken = await AuthenticationHelper.GetTokenForApplication ();
InvitationModel invite = new InvitationModel ();
invite.invitedUserEmailAddress = user.Email;
invite.inviteRedirectUrl = ConfigurationManager.AppSettings["InviteRedirectUrl"];
invite.sendInvitationMessage = true;
using (HttpClient client = new HttpClient ()) {
    client.BaseAddress = new Uri ("https://graph.microsoft.com");

    client.DefaultRequestHeaders.Accept.Add (
        new MediaTypeWithQualityHeaderValue ("application/json"));

    client.DefaultRequestHeaders.Authorization =
        new AuthenticationHeaderValue ("Bearer", accessToken);

    HttpResponseMessage response =
        client.PostAsJsonAsync<InvitationModel> ("v1.6/invitations", invite).Result;

    dynamic inviteResult =
        response.Content.ReadAsAsync<dynamic> ().Result;

    if (inviteResult.status != "Error") { }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*eur 5

您的问题在于,您在此处将Microsoft Graph和Azure AD Graph进行了合并。这是两个不同的API,具有不同的调用转换和权限范围。

为了创建一个邀请您将需要下列之一的许可范围注意,第一个是最严格的权限(全局),最后最宽松):

  • User.Invite.All
  • User.ReadWrite.All
  • Directory.ReadWrite.All

请注意,所有这些范围都是受管理员限制的,在使用它们之前需要获得管理员同意

拥有有效令牌后,您需要使用以下主体进行POST调用https://graph.microsoft.com/v1.0/invitations

{
  "invitedUserEmailAddress": "yyy@test.com",
  "inviteRedirectUrl": "https://myapp.com"
}
Run Code Online (Sandbox Code Playgroud)

由于您使用的是C#,因此我强烈建议您使用Microsoft Graph Client Library,而不是手动滚动自己的HttpClient调用。