gpt4 book ai didi

c# - 通过用户名和密码从 Azure Ad 获取 AccessToken

转载 作者:行者123 更新时间:2023-11-30 13:06:50 26 4
gpt4 key购买 nike

我在 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: No permission to access user information is configured for '4915f024-blah-blah-blah-f580ab5b0487' application, or it is expired or revoked.

我已经尝试了 UserCredential 的普通 (string, string)(string, SecureString) 重载。我已经尝试使用完全相同的用户名和密码组合,我在提示中输入了来自 AcquireToken 的第一次重载。

我还尝试为 Azure 中的应用程序提供所有委派权限:

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

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

  • 访问 Azure 服务管理

没有任何帮助。

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

我不需要任何用户通过 Graph Api 访问 Azure。我只需要该 AccessToken 即可访问我们的 SharePoint Online。

编辑:

架构:

enter image description here

描述:

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

Web Api 项目需要从我们的 SharePoint O365 租户读取、创建、更新和删除数据。所以这是我需要 AccessToken 来初始化 ClientContext 或通过休息响应发送我的地方。

由于 Web Api 处理用户授权,所以已经有一个供用户登录的端点,我想在这个端点中获取 token 。这就是为什么我希望它保持沉默,因为“灵活的浏览器弹出窗口”已经存在。

也许在这种情况下我不需要使用用户名/密码获取 token ,但我不知道如何配置 Azure 应用程序以与所有不同的 native 客户端一起使用。

最佳答案

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

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

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

关于c# - 通过用户名和密码从 Azure Ad 获取 AccessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29342555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com