diff --git a/README.md b/README.md index 502ee28..02ba586 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,6 @@ https://techieshour.wordpress.com/2020/05/11/managing-azure-b2c-users-with-micro https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS#client-credentials-provider -https://docs.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=csharp - https://docs.microsoft.com/en-us/graph/api/invitation-post?view=graph-rest-1.0&tabs=csharp + +https://learn.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=csharp#request-1 diff --git a/RegisterUsersAzureB2CMsGraph/CreateUser/UserModelB2CEmail.cs b/RegisterUsersAzureB2CMsGraph/CreateUser/UserModelB2CEmail.cs new file mode 100644 index 0000000..b36e1ee --- /dev/null +++ b/RegisterUsersAzureB2CMsGraph/CreateUser/UserModelB2CEmail.cs @@ -0,0 +1,24 @@ +using System.ComponentModel.DataAnnotations; + +namespace RegisterUsersAzureB2CMsGraph.CreateUser; + +public class UserModelB2CEmail +{ + [Required] + public string DisplayName { get; set; } = string.Empty; + + [Required] + public string Email { get; set; } = string.Empty; + + [Required] + public string PreferredLanguage { get; set; } = "de"; + + [Required] + public string Surname { get; set; } = string.Empty; + + [Required] + public string GivenName { get; set; } = string.Empty; + + [Required] + public DateTimeOffset BirthDate { get; set; } = DateTimeOffset.UtcNow.AddYears(-30); +} diff --git a/RegisterUsersAzureB2CMsGraph/Pages/CreateB2CFederatedWithPassword.cshtml.cs b/RegisterUsersAzureB2CMsGraph/Pages/CreateB2CFederatedWithPassword.cshtml.cs index 12a646b..d3ca2d9 100644 --- a/RegisterUsersAzureB2CMsGraph/Pages/CreateB2CFederatedWithPassword.cshtml.cs +++ b/RegisterUsersAzureB2CMsGraph/Pages/CreateB2CFederatedWithPassword.cshtml.cs @@ -22,7 +22,7 @@ public IActionResult OnGet() } [BindProperty] - public UserModelB2CIdentity UserModel { get; set; } = new UserModelB2CIdentity(); + public UserModelB2CEmail UserModel { get; set; } = new UserModelB2CEmail(); [BindProperty] public string? UserPassword { get; set; } @@ -40,7 +40,7 @@ public async Task OnPostAsync() return Page(); } - var (_, Password, _) = await _msGraphService.CreateFederatedUserWithPasswordAsync(UserModel); + var (_, Password, _) = await _msGraphService.CreateEmailAddressUserWithPasswordAsync(UserModel); UserPassword = Password; return OnGet(); diff --git a/RegisterUsersAzureB2CMsGraph/Services/MsGraphService.cs b/RegisterUsersAzureB2CMsGraph/Services/MsGraphService.cs index b433951..d375d88 100644 --- a/RegisterUsersAzureB2CMsGraph/Services/MsGraphService.cs +++ b/RegisterUsersAzureB2CMsGraph/Services/MsGraphService.cs @@ -104,7 +104,7 @@ await _graphServiceClient.Users } // TODO: not working afer Graph SDK 5 update - public async Task<(string Upn, string Password, string Id)> CreateFederatedUserWithPasswordAsync(UserModelB2CIdentity userModel) + public async Task<(string Upn, string Password, string Id)> CreateEmailAddressUserWithPasswordAsync(UserModelB2CEmail userModel) { // new user create, email does not matter unless you require to send mails var password = GetEncodedRandomString(); @@ -114,16 +114,16 @@ await _graphServiceClient.Users PreferredLanguage = userModel.PreferredLanguage, Surname = userModel.Surname, GivenName = userModel.GivenName, - OtherMails = new List { userModel.Email }, - Identities = new List() - { + OtherMails = [userModel.Email], + Identities = + [ new ObjectIdentity { - SignInType = "federated", + SignInType = "emailAddress", Issuer = _aadB2CIssuerDomain, IssuerAssignedId = userModel.Email }, - }, + ], PasswordProfile = new PasswordProfile { Password = password,