Можем ли мы создать пользователей локальной учетной записи с адресом Gmail?

Мы используем ADAL.Net для создания пользователей в Azure AD. используя SinginNames, мы можем указать любой адрес электронной почты (gmail или адреса электронной почты, не относящиеся к домену) в качестве имени пользователя для создания локальной учетной записи Azure AD.

когда мы пытаемся сделать то же самое с помощью Microsoft Graph (MSAL.Net), мы не можем создать пользователя:

Code: Request_BadRequest
Message: Property userPrincipalName is invalid.

Как мы можем создать адрес gmail в качестве имени пользователя с помощью Microsoft Graph или клиентской библиотеки Microsoft Graph?

Вновь созданная учетная запись должна быть учетной записью локального пользователя, а не гостевой.

var user = new User
{
    AccountEnabled = true,
    DisplayName = "displayName-value",
    MailNickname = "mailNickname-value",
    UserPrincipalName = "[email protected]",
    PasswordProfile = new PasswordProfile
    {
    ForceChangePasswordNextSignIn = true,
    Password = "Test123!@#"
    }
};

var graphClient = await _msGraphHelper.GetMsGraphClientAsync();
var createdUser = await graphClient
    .Users
    .Request()
    .AddAsync(user);

person Vetrivel mp    schedule 30.05.2019    source источник


Ответы (2)


Нет, ты не можешь. Вы должны запросить с помощью tenant specific email следующий пример:

URL-адрес запроса: https://graph.microsoft.com/v1.0/users

{
  "accountEnabled": true,
  "displayName": "KironTestDisplayName",
  "mailNickname": "KironTestNickName",
  "userPrincipalName": "[email protected]",
  "userType":"guest",
  "passwordProfile" : {
    "forceChangePasswordNextSignIn": true,
    "password": "Test@pass420"
  }
}

Что следует помнить:

  1. Получите правильный токен, в котором арендатор вы собираетесь создать пользователя
  2. Нужны необходимые запросить разрешение
  3. userPrincipalName должно следовать как [email protected]

  4. "userType":"guest" или "Member" Вы можете добавить

Примечание. Почта должна иметь вид [email protected]. В противном случае вы столкнетесь с ошибкой запроса 400, например Property userPrincipalName is invalid.

Ваше дело:

Если вы хотите создать пользователя с помощью gmail account, необходимо изменить шаблон запроса. Вы должны запросить API приглашения, как показано ниже:

URL-адрес запроса: https://graph.microsoft.com/v1.0/invitations

Тело запроса:

{
  "invitedUserEmailAddress": "TestGmailUser@gmailUser",
  "inviteRedirectUrl": "https://myapp.com"
}

Ответ:

введите здесь описание изображения

Примечание. Если перейти к azure portal, вы увидите, что вы не можете добавить gmail user в качестве члена домена, которого вы добавляете в качестве гостя после приглашения. Вот почему вам нужен приведенный выше шаблон запроса. Надеюсь, теперь вам ясно.

Добавить SDK пользователя Gmail:

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var invitation = new Invitation
{
    InvitedUserEmailAddress = "TestGmailUser@gmailUser",
    InviteRedirectUrl = "https://myapp.com"
};

await graphClient.Invitations
    .Request()
    .AddAsync(invitation);

Подтверждение портала Azure:

Я успешно добавил gmail user на свой портал, используя приведенный выше запрос. См. снимок экрана ниже:

введите здесь описание изображения

person Md Farid Uddin Kiron    schedule 30.05.2019
comment
На портале вы можете добавиться как гостевой пользователь, здесь как пользователь домена. Для гостевого пользователя могут быть добавлены gmail и другие пользователи. Спасибо - person Md Farid Uddin Kiron; 30.05.2019
comment
Но когда мы используем API графа объявлений, мы можем создать любой адрес электронной почты в качестве пользователя AD. но это не разрешено в MS Graph? - person Vetrivel mp; 30.05.2019
comment
В этом случае вы можете изменить свой шаблон запроса. Посмотрите мой пример, я дал образец для примера запроса пользователя tenant user и gmail or other. Попробуйте. Спасибо и счастливого кодирования! - person Md Farid Uddin Kiron; 31.05.2019
comment
когда мы приглашаем пользователя, это только гость, а не локальный пользователь. нам нужно разрешить Gmail в качестве пользователя локальной учетной записи. если вы используете рекламный график, мы можем добиться того же. но когда вы используете ms graph, мы не можем. - person Vetrivel mp; 31.05.2019
comment
@Vetrivelmp Вы не можете добавить пользователя gmail в качестве локального пользователя-арендатора с портала, чтобы использовать MS Graph. Другого способа, который я показал выше, нет. Для Microsoft Graph Я дал вам правильный ответ. А его очень общий личный кабинет не может быть пользователем арендатора. Это четко написано в официальный документ. - person Md Farid Uddin Kiron; 31.05.2019
comment
Это не кажется хорошим ответом. Я могу создать нового пользователя через процесс регистрации AD B2C с любым адресом электронной почты, но при запросе через API графика я получаю указанную выше ошибку. Проблема должна быть в чем-то другом, и ответ, который вы дали, совершенно другой, связанный с приглашениями пользователей. - person Riz; 25.02.2021
comment
Если я не ошибаюсь, для добавления пользователя-арендатора вы должны следовать правилам с доменным именем арендатора, подобным этому [email protected], но для другого пользователя вы должны добавить его в качестве гостя, отправив ему приглашение. И этот ответ был указан на конкретный пользовательский сценарий, который был решен, он может быть похож на вашу проблему, в этом случае, пожалуйста, опубликуйте свою проблему с соответствующей информацией, чтобы наш инженер мог помочь вам в этом. Спасибо. - person Md Farid Uddin Kiron; 25.02.2021

Для тех, кто все еще пытается это сделать, принятый ответ здесь бесполезен, или, по крайней мере, здесь не так, в 2021 году. Я смог создать локальные учетные записи B2C с личными адресами электронной почты, а также настраиваемые имена для входа, используя Пример 2. Создайте пользователя с социальной и локальной учетной записью.

POST https://graph.microsoft.com/v1.0/users
Content-type: application/json

{
  "displayName": "John Smith",
  "identities": [
    {
      "signInType": "userName",
      "issuer": "contoso.onmicrosoft.com",
      "issuerAssignedId": "johnsmith"
    },
    {
      "signInType": "emailAddress",
      "issuer": "contoso.onmicrosoft.com",
      "issuerAssignedId": "[email protected]"
    },
    {
      "signInType": "federated",
      "issuer": "facebook.com",
     "issuerAssignedId": "5eecb0cd"
    }
  ],
  "passwordProfile" : {
     "password": "password-value",
    "forceChangePasswordNextSignIn": false
  },
  "passwordPolicies": "DisablePasswordExpiration"
}
person Allen Rufolo    schedule 13.05.2021