C# 通过用户名&;从Azure广告获取AccessToken;密码
我在Azure广告中注册了一个本地客户端 当我使用C# 通过用户名&;从Azure广告获取AccessToken;密码,c#,adal,C#,Adal,我在Azure广告中注册了一个本地客户端 当我使用 var ar = _context.AcquireToken(resource, clientId, returnUri); 它会打开用户名和密码提示。如果输入正确,我将获得一个有效的AccessToken,一切正常 当我现在试图通过UserCrendtial在代码中输入凭据时: var credential = new UserCredential("username", "password"); var ar = _context.Ac
var ar = _context.AcquireToken(resource, clientId, returnUri);
它会打开用户名和密码提示。如果输入正确,我将获得一个有效的AccessToken,一切正常
当我现在试图通过UserCrendtial在代码中输入凭据时:
var credential = new UserCredential("username", "password");
var ar = _context.AcquireToken(resource, clientId, credential);
但当我使用直接输入的凭据进行尝试时,两者都会导致错误
AADSTS65001:未配置访问用户信息的权限
对于“4915f024-blah-blah-blah-f580ab5b0487”应用程序,或
过期或撤销
我已经尝试了UserCredential的正常(string,string)
和(string,SecureString)
重载。
我尝试过使用与AcquireToken的第一个重载完全相同的用户名和密码组合(我在提示符中输入了用户名和密码)
我还尝试向Azure中的应用程序授予所有委派权限:
- 读取目录数据
- 读写目录数据
- 访问组织的目录
- 访问Azure服务管理
在这种情况下,我可能不需要使用用户名/密码获取令牌,但我不知道如何配置Azure应用程序以与所有不同的本机客户端一起工作。直接使用用户名和密码有重要限制,请确保您没有遇到中列出的任何限制。 另外请注意,不需要显示用户同意屏幕(正如您描述的所有权限)或特定的消除歧义步骤(如尝试使用来自X的来宾用户访问受租户Y保护的资源)即可。
你的设想是什么?您希望使用用户名/密码而不是更灵活的浏览器弹出窗口的具体原因是什么?不确定这是否是您的情况,但您可以使用:
- 内置身份验证(在webapp选项中设置“开启”;然后创建express应用或/然后选择具有相同应用ID的高级模式)李>
- 然后添加广告原生客户端app李>
- 登录到old classic portal,选择本机应用程序,并在配置中添加对express/advacsed web应用程序的访问权限李>
- 之后,您将能够在浏览器中登录;使用adal lib,您可以通过移动设备登录访问api李>
有关更多信息,请参阅ms文档和示例 所以,您不需要代表用户执行操作,对吗?你能用吗?我们在应用程序中使用它,它工作得很好。