问题标签 [clientcredential]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
19 浏览

asp.net-mvc - 说明 MSAL 以使用 Microsoft Graph 获取数据的守护进程

我正在使用 Microsoft Graph 并获取需要管理员同意的用户信息。由于我不希望弹出页面出现在同意页面中,因此我将使用 Client credentail 来避免用户同意页面。通过查看 Microsoft 团队从 GitHub 创建的一些代码调用“Group Manager”和“userSync”,我得到了所需的结果,并且我对代码进行了一些更改。但我收到一些错误如下:

“无法验证 'id_token',找不到合适的 ISecurityTokenValidator:''如何验证”

请注意,我不仅是 Microsoft Graph 的新手,而且还是身份验证和授权的新手。我得到的错误我无法弄清楚。但是,我认为我为

OnAuthorizationCodeReceivedAsync

它不适用于客户凭证。你们中的一个人可以看看它并帮助了解它是否可以或不适合parituclar原因。

此外,在OnSecurityTokenValidated()下,特别是Globals.ConsumerTenantId 将是什么。我不知道那是什么。

请注意,我已经在 azure 中为 ID-Token 注册了我的应用程序。并且在配置中响应类型是 ResponseType = OpenIdConnectResponseType.CodeIdToken,

请看下面的代码:

0 投票
0 回答
8 浏览

sql - 使用客户端凭据审计数据库记录

我有一个运行一些后台进程的系统,这些进程可能会更新我们数据库中的记录,例如按计划向客户收费。我们使用授权类型的客户端凭据来调用我们的 api 来更新这些记录。运行后台进程的客户端是一个控制台应用程序。没有用户参与运行这些后台进程。它们是通过计划任务触发的。

我的问题是,由于客户端凭据授予类型是机器对机器,这意味着没有用户关联,我如何审核对数据库记录所做的更改?我们在 UpdatedById 字段中跟踪对记录所做的最新更新。那么我将如何使用客户端凭据来做到这一点?还是我使用了错误的流程?

0 投票
0 回答
15 浏览

python - REST API Python - 客户端凭证流与 OAuth

这里有点混乱。

我们正在构建一个将由应用程序和用户使用的 API。这是什么意思?好吧,这就是我们目前所拥有的:

用户在他们的计算机上下载我们的应用程序。如果是第一次使用,他们注册,否则,他们使用现有的用户名和密码登录。在后台,如果用户名使用其用户名和密码成功登录,则 api 会生成访问令牌,以便应用程序可以进行服务器 api 调用。

到目前为止,这很棒。这种身份验证方案甚至适用于我们基于 Web 的应用程序版本;访问令牌被传递。

最终,我们希望我们的用户能够拥有 API 访问权限,以构建他们自己的应用程序并使用 API。此外,还会有一些其他服务器-服务器应用程序也将使用 API。

基本上,应用程序之间的通信(无用户)可以访问整个 API,而另一方面,用户只能访问端点的一个子集,并且只能检索有关他们自己帐户的信息。

有什么方法可以处理这两种类型的身份验证方案吗?也许是服务器-服务器请求的 API 密钥和用户的 OAuth?您如何从具有范围的非用户中验证用户?我们不希望用户可以访问 GET /users 并检索所有用户的场景......该端点应该只保留给没有用户在玩的应用程序请求。是否有某种可以利用的混合模型(客户端凭据流)和 OAuth?

0 投票
0 回答
27 浏览

node.js - Node.js 中客户端凭证流的编写范围的顺序有什么关系?

我正在尝试调用从 Cerner EHR 提供患者详细信息的 get API。我正在使用基于系统的 SMART 应用程序。但是当我试图调用它时,我得到一个错误

无效范围。
'范围':'system/Observation.write system/Patient.read system/Patient.write system/Observation.read'

我在邮递员中试过这个,CURL 都很好用。

但是,当我将范围指定为 -'scope':'system/Patient.write system/Patient.read system/Observation.write system/Observation.read'即将 system/Patient.write 或任何其他范围作为第一个范围时,我无法获取患者的详细信息,我必须将 system/Patient.read 作为第一个范围本身我可以阅读患者的详细信息。我不明白为什么范围的顺序在这里很重要。

获取访问令牌的代码如下:

在此之后,我正在调用一个函数来获取患者详细信息,函数代码如下:

但显示错误为:

数据:{resourceType:'OperationOutcome',问题:[{严重性:'错误',代码:'禁止',诊断:'Bearer realm="fhir-ehr-code.cerner.com",错误="insufficient_scope"',表达式:['http.Authorization'] } ] }

但是,如果我通过将范围更改为来获取访问令牌:

然后我会得到病人的详细信息,因为我在system/Patient.read范围的开头添加了范围。

我使用 Node.js 作为这个 SMART 应用程序的后端,而且我是 Node.js 的初学者,所以我不明白为什么范围的顺序在调用 API 时很重要。有人知道吗?

0 投票
0 回答
71 浏览

oauth-2.0 - Keycloak - 如何在客户端凭据访问令牌中获取服务帐户角色

我希望后端应用程序使用另一个后端服务的 API,并控制每个应用程序被授权在后端服务上调用的内容。我使用 OAuth 2.0 客户端凭据流和 Keycloak 作为授权服务器。我希望为后端服务定义并为后端应用程序设置的角色出现在我从 Keycloak 请求的访问令牌中。但我唯一能设法出现的是领域级别的客户端范围。

我尝试了以下方法(我不希望需要所有这些,但我想尝试任何有意义的事情):

  • 创建领域测试
  • 在领域中添加了客户端范围 (realm-clientscope1)
  • 在领域中添加了角色(领域角色 1,领域角色 2)
  • 定义客户端“后端服务”,使其成为“仅承载”客户端,因为它不必将自己授权给其他服务
  • 在此客户端上创建角色(backendservice-role1、backendservice-role2、backendservice-role3-comp)
  • 定义客户端“后端应用程序”,使其成为机密客户端,启用服务帐户
  • 在此客户端上添加角色 (backendapp-role1)
  • 将 realm-clientscope1 分配为默认范围
  • 在范围选项卡(后端应用范围映射)上,关闭“允许的完整范围”,分配领域角色 1、领域角色 2 和客户端角色 backendservice-role1、backendservice-role2、backendservice-role3-comp
  • 分配的服务帐户角色与范围选项卡上的角色相同(realm-role1、realm-role2 和客户端角色 backendservice-role1、backendservice-role2、backendservice-role3-comp)

毕竟,我使用 Postman 来获取 grant_type 客户端凭据的访问令牌。访问令牌上唯一的东西是领域范围“realm-clientscope1”。为什么所有这些选项来设置服务帐户角色等。如果它们没有出现?

我想我误解了角色的使用方式,但我也找不到合适的解释。

为了尝试覆盖所有基础,我还在“后端应用”客户端上启用了授权,并在授权下尝试定义授权范围、策略和权限,这些都是有意义的。这也没有导致访问令牌上出现更多授权信息。

我尝试的最后一件事是在启用服务帐户的情况下将我的“后端服务”应用程序从“仅承载”更改为“机密”。这也没有什么不同(正如预期的那样)。

Keycloak 版本是 15.1.0(感谢提问,dreamcrash)。

0 投票
0 回答
51 浏览

oauth - 如何为社交标志设备 (Smiirl) 用例启用 2-legged oauth 以显示关注者数量。#linkedin

出于营销目的,我们购买了一个定制的物理计数器设备 ( www.smiirl.com ),并希望它能够实时显示我们组织在linkedin 上的关注者数量。

我们想使用 Organization Network Size API (Follower Count) 来显示我们组织的关注者数量 ( https://www.smiirl.com , https://help.smiirl.com/article/133-what-应该-i-do-to-enable-my-custom-counter-to-display-a-number)。

在没有任何人工参与的情况下,我们希望这个标志能够从 LinkedIn API 中提取组织关注者,因此我们需要使用创建此用例所需的客户端凭据(2 腿)身份验证令牌。

目前,无法通过 LinkedIn 身份验证 API 或开发人员门户 ( https://developer.linkedin.com ) 创建 2-legged 令牌,此选项在门户中被禁用,API 端点表示“此应用程序不允许创建应用程序令牌”

我们需要启用其他任何产品和程序来完成这项工作吗?

Marketing Developer Platform (MDP) 是否支持此用例?我们是否需要通过开发者门户订购带有“LinkedIn 营销开发者平台访问表单”的 MDP 才能启用此功能?它是 MDP 支持的用例吗?

参考:

获取访问权限 https://docs.microsoft.com/en-us/linkedin/shared/authentication/getting-access

应用程序授权(2 条腿授权): https ://docs.microsoft.com/en-us/linkedin/shared/authentication/authentication

#linkedin

0 投票
1 回答
27 浏览

api - JMeter:Oauth 2.0 令牌生成 - 超时

我正在尝试通过 JMeter 分两步进行 API 测试:

1. 生成访问令牌

在这里,身份验证请求超时。

身份验证类型:OAuth2.0 授权类型 - 客户端凭据

我在参数部分传递令牌 URL 和 grant_type、client_id 和 client_secret,如下所示:

在此处输入图像描述

但我收到以下错误:

在此处输入图像描述

2. 使用获取的令牌访问 API 我可以使用 POSTMAN 生成的令牌来访问它。同样在 POSTMAN 中,我能够正确地进行身份验证。我尝试记录 POSTMAN 脚本,但未记录身份验证流程。只是 GET API 正在工作。

有没有办法在 JMeter 中获取令牌?或任何其他解决方法?