#microsoft-graph-api #azure-ad-b2c
#microsoft-graph-api #azure-ad-b2c
Вопрос:
Я пытаюсь добавить пользователя с электронной почтой ...@gmail.com
в свой каталог B2C с помощью Graph API (C #). Я получаю это в качестве ответа:
Доменная часть свойства userPrincipalName недопустима. Вы должны использовать одно из проверенных доменных имен в вашей организации.
Эта система должна позволять пользователям любого домена электронной почты входить в систему. Пользователям необходимо входить на веб-сайт, а не иметь доступа к порталу Azure.
Есть ли способ выполнить это без добавления каждого домена вручную?
Код для добавления пользователя через Graph API:
var confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId(tenantId)
.WithClientSecret(clientSecret)
.Build();
var authProvider = new ClientCredentialProvider(confidentialClientApplication);
var graphClient = new GraphServiceClient(authProvider);
var user = new User
{
AccountEnabled = true,
DisplayName = emailAddress,
MailNickname = emailAddress.Split('@').FirstOrDefault(),
UserPrincipalName = emailAddress,
PasswordProfile = new PasswordProfile
{
ForceChangePasswordNextSignIn = true,
Password = tempPassword
}
};
Ответ №1:
Если вы пытаетесь создать локальные учетные записи B2C (не AAD), попробуйте установить свойство identities в своем запросе, но не upn. Последнее должно быть сгенерировано автоматически. Кроме того, срок действия пароля должен быть отключен, а принудительное изменение пароля при следующем входе также должно быть отключено.
Комментарии:
1. Работает после удаления MailNickname и UPN и замены на:
Identities = new List<ObjectIdentity> { new ObjectIdentity { SignInType = "emailAddress", Issuer = domainName, IssuerAssignedId = emailAddress} },
Ответ №2:
Мне пришлось добавить следующие пакеты:
<PackageReference Include="Microsoft.Graph" Version="4.0.0-preview.7" />
<PackageReference Include="Microsoft.Graph.Auth" Version="1.0.0-preview.7" />
Затем:
var confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(Settings.ClientId)
.WithTenantId(Settings.Tenant)
.WithClientSecret(Settings.ClientSecret)
.Build();
var authProvider = new ClientCredentialProvider(confidentialClientApplication);
var graphClient = new GraphServiceClient(authProvider);
var user = new User
{
AccountEnabled = true,
GivenName = "Name",
Surname = "Surname",
DisplayName = "Name Surname",
PasswordProfile = new PasswordProfile
{
ForceChangePasswordNextSignIn = false,
Password = "pass.123",
},
PasswordPolicies = "DisablePasswordExpiration",
Identities = new List<ObjectIdentity>
{
new ObjectIdentity()
{
SignInType = "emailAddress",
Issuer = Settings.Tenant,
IssuerAssignedId = "sample@sample.com"
}
}
};
await graphClient.Users.Request().AddAsync(user);
Обязательно добавьте разрешение на создание пользователей в Azure portal.
Комментарии:
1. Обратите внимание, что это
Settings.Tenant
должно быть ваше полное имя клиента AAD B2C (xxx.onmicrosoft.com ).