Csharp/C#教程:Azure AD AcquireToken不适用于应用程序密码分享


Azure AD AcquireToken不适用于应用程序密码

我正在尝试使用.NET ADAL库validationAzure AD中的用户密码。 这适用于没有MFA的常规用户帐户,但是对于已激活MFA的用户,我遇到了问题。

当使用用户的实际密码时,我得到了AADSTS50076: Application password is required. ,这是公平的,但当我创建一个新的应用程序密码时,我收到错误AADSTS70002: Error validating credentials. AADSTS50020: Invalid username or password AADSTS70002: Error validating credentials. AADSTS50020: Invalid username or password 。 我创建了多个应用程序密码,但它们都不起作用。

用于尝试身份validation的代码如下:

 var ac = new AuthenticationContext("https://login.windows.net/my-tenant.com"); var authResult = ac.AcquireToken("https://graph.windows.net", "my-client-id", new UserCredential("my.account@my-tenant.com", "my-password")); 

尝试进行身份validation的用户是此AD中的全局管理员。

是否可以为具有MFA的用户进行这样的身份validation?

所以,为了回答我自己的问题,我采取了以下措施(为简洁而清理):

 public class AzureAdAuthenticationProvider { private const string AppPasswordRequiredErrorCode = "50076"; private const string AuthorityFormatString = "https://login.windows.net/{0}"; private const string GraphResource = "https://graph.windows.net"; private AuthenticationContext _authContext; private string _clientId; public AzureAdAuthenticationProvider() { var tenantId = "..."; // Get from configuration _authContext = new AuthenticationContext(string.Format(AuthorityFormatString, tenantId)); } public bool Authenticate(string user, string pass) { try { _authContext.AcquireToken(GraphResource, _clientId, new UserCredential(user, pass)); return true; } catch (AdalServiceException ase) { return ase.ServiceErrorCodes.All(sec => sec == AppPasswordRequiredErrorCode); } catch (Exception) { return false; // Probably needs proper handling } } } 

它并不漂亮,但它能完成这项工作。

通过使用ServiceErrorCodes.All() ,我确保只有在发生单个AppPasswordRequired错误时,身份validation才成功。

此方法的唯一缺点是启用了MFA的用户必须使用其实际帐户密码才能登录。 似乎不支持使用应用密码。

上述就是C#学习教程:Azure AD AcquireToken不适用于应用程序密码分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1029118.html

(0)
上一篇 2022年1月12日
下一篇 2022年1月12日

精彩推荐