在 MSAL 的 AcquireTokenSilentAsync 中使用哪个 IUser
Which IUser to Use in AcquireTokenSilentAsync in MSAL
我是在使用 Azure AD B2C 的移动 (Xamarin) 应用程序的上下文中问这个问题的。
tl;博士;其中一个是: 我是否应该在调用 PublicClientApplication.AcquireTokenSilentAsync
时始终使用从“登录/注册”策略获得的 IUser
?
现在让我解释一下场景。
用户尝试使用应用程序,但需要立即重置密码。
使用 MSAL 库,调用 PublicClientApplication.AcquireTokenAsync
调用 "reset password" 策略。
假设调用成功,IUser
对象被放置在 PublicClientApplication.Users
集合中。
此外,从该函数 AuthenticationResult
中返回的令牌足以让用户访问需要 AD B2C 令牌的资源。
这意味着以后对 PublicClientApplication.AcquireTokenSilentAsync
的任何调用都将使用与 "reset-password" 策略关联的 IUser
。
它会起作用...但这是最佳做法吗?
或者应用程序是否应该立即提示用户登录,从而调用 "sign-up/sign-in" 策略,然后将与该策略关联的 IUser
添加到 PublicClientApplication.Users
集合中。那么每当 AcquireTokenSilentAsync
被调用时,那个特定的 IUser
可以传递给它吗? (而不是 "reset password" 政策中的一项。)
每当调用 "profile editing" 策略时,都可以询问相同的问题。一个新的 IUser
被添加到集合中,假设用户之前已经登录,那么哪个 IUser
被发送到 AcquireTokenSilentAsync
有关系吗?
马特,我建议你看看下面的示例 active-directory-b2c-xamarin-native, and it particular the GetUserByPolicy(IEnumerable<User> users, string policy)
method located in UserDetailsClient/MainPage.xaml.cs#L76-L85。此方法检索权限 IUser
以使用给定的策略。
foreach (var user in users)
{
string userIdentifier = Base64UrlDecode(user.Identifier.Split('.')[0]);
if (userIdentifier.EndsWith(policy.ToLower())) return user;
}
它的用法在UserDetailsClient/MainPage.xaml.cs#L116
中的OnCallApi
方法中也有体现
我是在使用 Azure AD B2C 的移动 (Xamarin) 应用程序的上下文中问这个问题的。
tl;博士;其中一个是: 我是否应该在调用 PublicClientApplication.AcquireTokenSilentAsync
时始终使用从“登录/注册”策略获得的 IUser
?
现在让我解释一下场景。
用户尝试使用应用程序,但需要立即重置密码。
使用 MSAL 库,调用 PublicClientApplication.AcquireTokenAsync
调用 "reset password" 策略。
假设调用成功,IUser
对象被放置在 PublicClientApplication.Users
集合中。
此外,从该函数 AuthenticationResult
中返回的令牌足以让用户访问需要 AD B2C 令牌的资源。
这意味着以后对 PublicClientApplication.AcquireTokenSilentAsync
的任何调用都将使用与 "reset-password" 策略关联的 IUser
。
它会起作用...但这是最佳做法吗?
或者应用程序是否应该立即提示用户登录,从而调用 "sign-up/sign-in" 策略,然后将与该策略关联的 IUser
添加到 PublicClientApplication.Users
集合中。那么每当 AcquireTokenSilentAsync
被调用时,那个特定的 IUser
可以传递给它吗? (而不是 "reset password" 政策中的一项。)
每当调用 "profile editing" 策略时,都可以询问相同的问题。一个新的 IUser
被添加到集合中,假设用户之前已经登录,那么哪个 IUser
被发送到 AcquireTokenSilentAsync
有关系吗?
马特,我建议你看看下面的示例 active-directory-b2c-xamarin-native, and it particular the GetUserByPolicy(IEnumerable<User> users, string policy)
method located in UserDetailsClient/MainPage.xaml.cs#L76-L85。此方法检索权限 IUser
以使用给定的策略。
foreach (var user in users)
{
string userIdentifier = Base64UrlDecode(user.Identifier.Split('.')[0]);
if (userIdentifier.EndsWith(policy.ToLower())) return user;
}
它的用法在UserDetailsClient/MainPage.xaml.cs#L116
中的OnCallApi
方法中也有体现