Estou usando a API do MS Graph para registrar o usuário no AD B2C e funciona quando tentei sem adicionar atributos de usuário adicionais, mas falha com um erro
propriedades não estão disponíveis
quando tentei adicionar esses atributos personalizados do usuário.
Eu segui outro tópico de solução e adicionei clientid
sem '-' ao definir o nome do atributo no dicionário, mas não funciona.
Aqui está meu trecho de código:
public class UserService : IUserService
{
private readonly ILogger<UserService> logger;
private readonly GraphServiceClient graphServiceClient;
private readonly string[] supportedRegionCodes;
private readonly string _clientId;
public UserService(ILogger<UserService> logger, IOptions<B2CConfiguration> options)
{
this.logger = logger;
ClientSecretCredentialOptions credentialOptions = new()
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};
ClientSecretCredential clientSecretCredential = new(
options.Value.TenantId,
options.Value.ClientId,
options.Value.ClientSecret,
credentialOptions);
_clientId = options.Value.ClientId;
this.graphServiceClient = new GraphServiceClient(clientSecretCredential, options.Value.Scopes);
this.supportedRegionCodes = options.Value.SupportedRegionCodes;
}
public async Task<string?> RegisterUserToB2C(object userDetails)
{
try
{
string clientId = _clientId.Replace("-", string.Empty);
var user = new User
{
Identities = new List<ObjectIdentity>
{
new ObjectIdentity
{
SignInType = "userName",
Issuer ="empxxxqa.onmicrosoft.com",
IssuerAssignedId = "testuser011"
}
},
DisplayName = "Test User",
GivenName = "Test",
Surname = "User",
Mail = "[email protected]",
OtherMails = new List<string> { "[email protected]" },
PasswordProfile = new PasswordProfile
{
Password = "@w0rd123!",
ForceChangePasswordNextSignIn = true
},
UserType = "Member",
AdditionalData = new Dictionary<string, object>
{
{$"extension_{clientId}_CardId","TEST"}
}
};
var created = await graphServiceClient.Users.PostAsync(user);
return created?.Id;
}
catch (Exception ex)
{
return ex.Message;
}
}
}
Este é o erro que estou recebendo:
As seguintes propriedades de extensão não estão disponíveis: extension_3a84xxxxxxxxxxx126f_CardId.
Também adicionei uma captura de tela da propriedade que criamos no b2c:
Sou relativamente novo no AD B2C e na API do MS Graph. Preciso adicionar algo no nível B2C? Como, sem atributos de usuário personalizados adicionais, quando tentei me registrar, funcionou, então acredito que não deve haver problemas de permissão que causem isso.
Para criar um usuário usando a API do Microsoft Graph com atributos de usuário personalizados em C#, verifique o seguinte:
Criei um atributo de usuário personalizado:
Observe que: você precisa passar o ID do cliente do b2c-extensions-app sem hífen como o ID da extensão, como abaixo:
extension_<b2cExtensionsAppIDwithouthyphen>_CardId
Agora, como exemplo , usei o código abaixo para criar um usuário com atributo de usuário personalizado no Azure AD B2C :
Usuário criado com sucesso:
Para verificar se o atributo de usuário personalizado foi executado, executei o fluxo do usuário e consegui ver o atributo de usuário personalizado no token de ID com sucesso: