问题标签 [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.
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,
请看下面的代码:
sql - 使用客户端凭据审计数据库记录
我有一个运行一些后台进程的系统,这些进程可能会更新我们数据库中的记录,例如按计划向客户收费。我们使用授权类型的客户端凭据来调用我们的 api 来更新这些记录。运行后台进程的客户端是一个控制台应用程序。没有用户参与运行这些后台进程。它们是通过计划任务触发的。
我的问题是,由于客户端凭据授予类型是机器对机器,这意味着没有用户关联,我如何审核对数据库记录所做的更改?我们在 UpdatedById 字段中跟踪对记录所做的最新更新。那么我将如何使用客户端凭据来做到这一点?还是我使用了错误的流程?
python - REST API Python - 客户端凭证流与 OAuth
这里有点混乱。
我们正在构建一个将由应用程序和用户使用的 API。这是什么意思?好吧,这就是我们目前所拥有的:
用户在他们的计算机上下载我们的应用程序。如果是第一次使用,他们注册,否则,他们使用现有的用户名和密码登录。在后台,如果用户名使用其用户名和密码成功登录,则 api 会生成访问令牌,以便应用程序可以进行服务器 api 调用。
到目前为止,这很棒。这种身份验证方案甚至适用于我们基于 Web 的应用程序版本;访问令牌被传递。
最终,我们希望我们的用户能够拥有 API 访问权限,以构建他们自己的应用程序并使用 API。此外,还会有一些其他服务器-服务器应用程序也将使用 API。
基本上,应用程序之间的通信(无用户)可以访问整个 API,而另一方面,用户只能访问端点的一个子集,并且只能检索有关他们自己帐户的信息。
有什么方法可以处理这两种类型的身份验证方案吗?也许是服务器-服务器请求的 API 密钥和用户的 OAuth?您如何从具有范围的非用户中验证用户?我们不希望用户可以访问 GET /users 并检索所有用户的场景......该端点应该只保留给没有用户在玩的应用程序请求。是否有某种可以利用的混合模型(客户端凭据流)和 OAuth?
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 时很重要。有人知道吗?
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)。
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