【问题标题】:Getting AccessToken from Azure Ad via UserName & Password通过用户名和密码从 Azure 广告获取 AccessToken
【发布时间】:2018-10-26 06:46:54
【问题描述】:

我在 Azure AD 中注册了一个本地客户端。

当我使用时

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 中的应用程序授予所有委派权限:

  • 读取目录数据
  • 读写目录数据
  • 访问您组织的目录

并添加了具有权限的 Windows Azure 服务管理 API 应用程序:

  • 访问 Azure 服务管理

没有任何帮助。

作为旁注,Azure 中的应用程序对 SharePoint O365 租户具有权限。要读取和写入 ListItems,我不知道这是否相关。我通过的资源是 SharePoint 地址。

我不需要任何用户通过 Graph Api 访问 Azure。我只需要那个 AccessToken 就可以访问我们的 SharePoint Online。

编辑:

架构:

说明:

我们有一个处理用户授权、负载平衡等的 Web Api 项目。该 Web Api 项目将由本机 Dekstop 客户端或混合 HTML5 和 Javascript 移动设备应用程序查询。

Web Api 项目需要从我们的 SharePoint O365 租户中读取、创建、更新和删除数据。因此,我需要 AccessToken 来初始化 ClientContext 或通过休息响应发送 i。

由于 Web Api 处理用户授权,因此已经有一个端点供用户登录,并且我想在此端点中获取令牌。这就是我希望它保持沉默的原因,因为“flexbile 浏览器弹出窗口”已经存在。

也许在这种情况下我不需要使用用户名/密码获取令牌,但是我不知道如何配置 Azure 应用程序权限以使用所有不同的本地客户端。

【问题讨论】:

标签: c# adal


【解决方案1】:

不确定是否是您的情况,但您可以使用:

  • 内置身份验证(在 web 应用选项中设置“开启”;然后创建快速应用或/然后选择具有相同应用 ID 的高级模式);
  • 然后添加 AD 原生客户端应用;
  • 登录旧的经典门户,选择本地应用,并在配置中添加对您的 express/advacsed web 应用的访问权限;
  • 之后您就可以在浏览器中登录了;并且使用 adal lib 将能够登录以从移动设备访问您的 api;

有关更多信息,请参阅 ms 文档和示例;

【讨论】:

    【解决方案2】:

    直接使用用户名和密码有重要限制,请确保您没有绊倒http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authenticate-users-via-usernamepassword/ 中列出的任何一个。 另请注意,需要显示用户同意屏幕(正如您描述的所有权限)或特定消歧步骤(例如尝试使用来自 X 的来宾用户访问受租户 Y 保护的资源)都不会起作用。 你的场景是什么?您想使用用户名/密码而不是更灵活的浏览器弹出窗口的任何具体原因?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      相关资源
      最近更新 更多