dynamics-crm - 绕过 Dynamics CRM 中的登录
问题描述
我目前正在尝试使用 Web API 查询方法从 Dynamics CRM (Office 365 - E5) 获取数据,例如api.crm.dynamics.com/api/data/v8.2/accounts?$select=accountid,name,new_gl_exp,new_autol_exp
我将把这个 api 包含在外部应用程序中(使用 HTML 和 Javascript 开发)并托管在本地 IIS 中
我已经在 CRM 和 Azure 中完成了基本设置,并在登录后获得了令牌login.microsoft.com
问题
- 我们如何在不输入用户名和密码的情况下进行身份验证
login.microsoftonline.com
有没有办法绕过这个登录(比如将客户端、信条、客户端秘密 ID 作为参数传递给login.microsoft.com
)或任何 REST API?
我们为应用程序使用单独的登录名,因此我们将不得不使用两个登录名
- 应用登录
login.microsoft.com
对于动态 CRM
解决方案
Web API 身份验证模式 使用 Web API 时,可以通过三种不同的方式来管理身份验证。
在 Web 资源中使用 JavaScript 当您在 HTML Web 资源、表单脚本或功能区命令中使用带有 JavaScript 的 Web API 时,您不需要包含任何验证代码。在上述每种情况下,用户都已通过应用程序的身份验证,并且身份验证由应用程序管理。
使用本地部署 当您使用 Web API 进行本地部署时,您必须包含用户的网络凭据。以下示例是一个 C# 函数,它将返回为给定用户的网络凭据配置的 HttpClient:
private HttpClient getNewHttpClient(string userName,string password,string domainName, string webAPIBaseAddress)
{
HttpClient client = new HttpClient(new HttpClientHandler() { Credentials = new NetworkCredential(userName, password, domainName) });
client.BaseAddress = new Uri(webAPIBaseAddress);
client.Timeout = new TimeSpan(0, 2, 0);
return client;
}
使用 Microsoft Dynamics 365(在线)或面向 Internet 的部署 当您使用适用于 Dynamics 365(在线)的 Web API 或面向 Internet 的本地部署 (IFD) 时,您必须使用 OAuth,如使用连接到 Microsoft Dynamics 365 Web 服务中所述认证。
如果您使用 JavaScript 创建单页应用程序 (SPA),则可以使用 adal.js 库,如使用 OAuth 和跨域资源共享中所述将单页应用程序连接到 Microsoft Dynamics 365。
推荐阅读
- algorithm - 计算任意2个元素之间绝对差的重复过程后数组的不同可能值的个数
- discord.py - member.edit 中的“未定义错误‘Self’”
- r - 如何删除数据框中每个单元格中的附加数字
- gitlab - CI 配置将托管在 GitLab 内的不同项目中
- amazon-web-services - 每个事件触发器的 Lambda 函数并发调用
- python - 打印报表仅显示列表中的第一个帐户名称
- arrays - vb net函数获取3维数组中每个元素的值
- flutter - 如何从具有固定宽度和高度的容器中消除溢出错误
- javascript - 使用 Lodash 从嵌套数组对象中获取总和?
- sql - 您可以对一个数据库表进行双重继承吗?