私は現在、データベースに保存されている情報に基づいて Office 365 のユーザーのプロビジョニングと更新を管理する C# クラウド サービス アプリケーションで Microsoft.Azure.ActiveDirectory.GraphClient を使用しています。
私が直面している問題は、ユーザーのメールアドレスの設定です。新しいユーザーのプロビジョニング時に、新しいユーザー オブジェクトのメール アドレス プロパティを設定すると、グラフ クライアントによってエラーがスローされます。新しいユーザーをプロビジョニングすると、プライマリ SMTP アドレスが自動的にユーザーの UPN に設定されます。次のコードは、新しいユーザーを正常に作成し、プライマリ SMTP アドレスを UserPrincipalName に設定された値と同じになるように設定します。
IUser newUser = new User();
newUser.DisplayName = "Firstname Surname";
newUser.UserPrincipalName = "someone@somewhere.com";
newUser.AccountEnabled = true;
newUser.MailNickname = "firstnamesurname";
newUser.ImmutableId = "0k3otwAAEkm8vGSKbJqRZg==";
newUser.PasswordProfile = new PasswordProfile
{
Password = "somerandompassword",
ForceChangePasswordNextLogin = true
};
newUser.UsageLocation = "GB";
_activeDirectoryClient.Users.AddUserAsync(newUser).Wait();
当然のことですが、UPN とプライマリ メール アドレスが一致しないと、AutoDiscover の問題が発生する可能性があります。
私が抱えている問題は、ユーザーを更新するときに設定すると、ユーザーオブジェクトの「メール」プロパティもエラーをスローすることです。
次のコードは、ユーザーを正常に更新します。
User retrievedUser = new User();
List<IUser> retrievedUsers = null;
retrievedUsers = _activeDirectoryClient.Users
.Where(searchUser => searchUser.ImmutableId.Equals(0k3otwAAEkm8vGSKbJqRZg==))
.ExecuteAsync().Result.CurrentPage.ToList();
if (retrievedUsers != null && retrievedUsers.Count == 1)
{
retrievedUser = (User)retrievedUsers.First();
retrievedUser.UserPrincipalName = "someone1@somewhere.com";
retrievedUser.UpdateAsync().Wait();
}
上記のコードはユーザーの UPN を変更しますが、新しいユーザーを追加するシナリオのようにプライマリ SMTP アドレスを更新しません。これは、AutoDiscover の問題 (UPN がプライマリ SMTP アドレスとは異なるため) を引き起こし、新しいユーザーの作成時にメール アドレスを設定できない理由を無効にする可能性があるため、私には理解できません。
ユーザーの電子メール アドレスを更新する方法や、追加の電子メール アドレスをプライマリ SMTP アドレスとして設定する方法の詳細が見つかりません。この要件のシナリオとしては、ユーザーが結婚し、プライマリ メール アドレスとして新しいメール アドレスを持ちたい場合などがあります。
Microsoft.Azure.ActiveDirectory.GraphClient を使用してユーザーのプライマリ SMTP アドレスを管理する方法について、誰か情報を教えてください。追加の電子メール アドレスの設定に関する情報は見つかりますが、プライマリ SMTP アドレスの変更方法に関する情報はありません。
助けてくれてありがとう!