// ノーマルバージョン
public class Person {
public string Name { get; set; }
public string Mail { get; set; }
}
var p = new Person() { Name = "T.Sumomo", Mail = "t.sumomo@momo.com" };
var p1 = new Person() { Name = "T.Sumomo", Mail = "t.sumomo@momo.com" };
p == p1
p.Equals(p1)
List<Person> l1 = new List<Person>() { p };
l1.Contains(p1)
l1.IndexOf(p1)
// 値比較バージョン
public class Person1 : IEquatable<Person1> {
public string Name { get; set; }
public string Mail { get; set; }
// 値で比較
public bool Equals(Person1 other) {
return other?.Name == Name && other?.Mail == Mail;
}
}
var p2 = new Person1() { Name = "T.Sumomo", Mail = "t.sumomo@momo.com" };
var p3 = new Person1() { Name = "T.Sumomo", Mail = "t.sumomo@momo.com" };
p2 == p3
p2.Equals(p3)
List<Person1> l2 = new List<Person1>() { p2 };
l2.Contains(p3)
l2.IndexOf(p3)
Microsoft Graphを使用してユーザーのパスワードを強制的に再設定するには、下記のように、PasswordProfileを使用する必要がある。Microsoft Graph APIの.ChangePassword()メソッドを使用するには、旧パスワードが必須なため旧パスワードが分からないと、変更できないので・・・
using Microsoft.Graph;
using Azure.Identity;
・・・
var options = new TokenCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
};
var cred = new UsernamePasswordCredential(AdminUsername,AdminPassword,TenantId,ServiceId,options);
// scopeにはUser.ReadWrite.All,Directory.ReadWrite.Allが必要
var graphClient = new GraphServiceClient(cred,scopes);
// テンポラリパスワードの生成
string newPassword = GeneratePassword();
// パスワードの変更
try {
User user = new User();
user.PasswordProfile = new PasswordProfile() {
ForceChangePasswordNextSignIn = true, // 次のログイン時にパスワード強制変更
ForceChangePasswordNextSignInWithMfa = false,
Password = newPassword // テンポラリパスワード
};
// パスワード情報の更新
await graphClient.Users[targetaccount]
.Request()
.UpdateAsync(user);
} catch (Exception e) {
Message = $"パスワードリセットに失敗しました。<br/>{e.Message}";
return;
}