ADAL 使用用户名和密码获取令牌
ADAL acquire token with username and password
我正在尝试从 Xamarin Form 应用程序中获取来自 azure AD 的令牌。我正在使用 ADAL 4+,我不希望用户每次启动应用程序时都登录。
无论如何,在用户已经成功登录后重新启动应用程序时,是否可以通过编程方式刷新或获取令牌。
由于 ADAL 不再具有 userPasswordCredientian()。我找不到任何替代解决方案。
一旦 ADAL.NET 为用户获取了令牌,它就会将其与刷新令牌一起缓存。然后下次应用程序需要令牌时,它应该首先调用 AcquireTokenSilentAsync
来验证缓存中是否有可接受的令牌。如果有令牌但已过期,AcquireTokenSilentAsync
将使用缓存的刷新令牌来刷新访问令牌,如果缓存中没有令牌,则可能需要交互式调用才能让用户登录-又进来了。
Here's some more information on how this works in ADAL
这是推荐的调用模式,先进行 AT 静默调用,捕获 AdalSilentTokenAcquisitionException(因为未找到令牌),然后进行 AT 交互调用。
AuthenticationContext ac = new AuthenticationContext(authority);
AuthenticationResult result=null;
try
{
result = await ac.AcquireTokenSilentAsync(resource, clientId);
}
catch (AdalException adalException)
{
if (adalException.ErrorCode == AdalError.FailedToAcquireTokenSilently
|| adalException.ErrorCode == AdalError.InteractionRequired)
{
result = await ac.AcquireTokenAsync(resource, clientId, redirectUri,
new PlatformParameters(PromptBehavior.Auto));
}
}
我建议转到 MSAL...这里是 documentation on the differences between ADAL and MSAL and specifics on the username/password flow in MSAL and how to migrate from ADAL.NET 4.x to MSAL.NET 2.x and the just released MSAL v3 api。
我正在尝试从 Xamarin Form 应用程序中获取来自 azure AD 的令牌。我正在使用 ADAL 4+,我不希望用户每次启动应用程序时都登录。 无论如何,在用户已经成功登录后重新启动应用程序时,是否可以通过编程方式刷新或获取令牌。
由于 ADAL 不再具有 userPasswordCredientian()。我找不到任何替代解决方案。
一旦 ADAL.NET 为用户获取了令牌,它就会将其与刷新令牌一起缓存。然后下次应用程序需要令牌时,它应该首先调用 AcquireTokenSilentAsync
来验证缓存中是否有可接受的令牌。如果有令牌但已过期,AcquireTokenSilentAsync
将使用缓存的刷新令牌来刷新访问令牌,如果缓存中没有令牌,则可能需要交互式调用才能让用户登录-又进来了。
Here's some more information on how this works in ADAL
这是推荐的调用模式,先进行 AT 静默调用,捕获 AdalSilentTokenAcquisitionException(因为未找到令牌),然后进行 AT 交互调用。
AuthenticationContext ac = new AuthenticationContext(authority);
AuthenticationResult result=null;
try
{
result = await ac.AcquireTokenSilentAsync(resource, clientId);
}
catch (AdalException adalException)
{
if (adalException.ErrorCode == AdalError.FailedToAcquireTokenSilently
|| adalException.ErrorCode == AdalError.InteractionRequired)
{
result = await ac.AcquireTokenAsync(resource, clientId, redirectUri,
new PlatformParameters(PromptBehavior.Auto));
}
}
我建议转到 MSAL...这里是 documentation on the differences between ADAL and MSAL and specifics on the username/password flow in MSAL and how to migrate from ADAL.NET 4.x to MSAL.NET 2.x and the just released MSAL v3 api。