问题标签 [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 回答
113 浏览

c# - OpenID Connect:如何在客户端凭证流中添加声明数据

是否可以使用 OpenID Connect 在客户端凭据流中添加自定义声明数据?

如果是的话,你能告诉我怎么做吗?

我正在为移动应用程序的服务设置客户端凭据流,以便通过令牌端点进行通信以获取访问令牌。在这里,我需要使用 JWT 声明中的每个用户登录数据生成令牌。

请建议是否有更好的流程来实现这一目标。

0 投票
2 回答
1098 浏览

identityserver4 - 使用身份服务器 4 和客户端凭据授予类型的基于角色的访问

我刚开始使用 Identity Server 4。

我正在尝试使用 Client Credentials 授权类型来保护 API。

我在 IS4 中有一个 API 设置:

我也有以下客户端设置:

我在 API 中有一个要保护的控制器:

如果我随后创建一个令牌请求,如下所示:

这允许我调用 API 并访问资源。完美的!

但是,我想用一个角色来保护控制器,例如

所以我的两个问题是:

1:如何使用客户端凭据设置基于角色的授权?

2:由于客户端凭据未链接到用户,我如何保持记录更改的审计跟踪,例如供应商 X 由 userId 5 更新,等等。

谢谢

0 投票
1 回答
2390 浏览

authorization - 如何在 keycloak 管理控制台中对客户端进行 IP 限制

我在 keycloak 管理控制台中定义了一个客户端,以使用 client_credentials 流对其进行授权,以在我的应用程序中调用服务器到服务器 api。一切都很好,我想为该客户端应用 IP 限制。

我在哪里可以在管理控制台中定义这个限制?我在 keycloak 文档中没有找到这样的配置。

0 投票
1 回答
754 浏览

azure-ad-b2c - 更改密码 Azure AD B2C

我已经能够创建 Azure Functions App 来管理 Azure B2C 用户。我可以使用 client_credentials Flow 创建新用户并完美更新配置文件。但是,当我使用带有正文的 PATCH 请求更改密码时:

我收到此错误:

我对此进行了一些研究,并发现更新密码需要委托权限“Directory.AccessAsUser.All”。在前端应用程序中,我使用 B2CLogin 流登录,因此访问令牌与 Graph API 不兼容。此外,“Directory.AccessAsUser.All”在 B2C 应用程序的应用程序级别不存在。因此,我也不能将补丁请求与 client_credentials 流一起使用。根据一些建议,该过程可以由 Azure AD PowerShell 通过分配“公司管理员”角色来完成。但是,我还没有找到通过 Azure Function 重置密码的解决方案。分步解决方案(如果存在)对我来说真的很有帮助,因为我对 Azure 服务还比较陌生。

0 投票
2 回答
34 浏览

rest - 具有 API 和仅外部提供商的网站的 OAuth 安全性

我在一台服务器上有一个带有 RESTful API 的 .Net core 3.2 站点,在另一台服务器上有一个客户端网站。用户仅通过 Facebook、Google 或 Microsoft 等外部提供商向客户端应用程序进行身份验证。我们还有一个将要使用的 Identity Server 4.0,但它的行为就像另一个外部提供者一样。

问题是,一旦用户在客户端通过身份验证,并且他们授予的角色/声明已经确定,我们如何从 API 请求特定资源?客户端 Web 应用程序了解用户并知道用户就是他们所说的那个人,客户端应用程序知道他们可以做什么。我们如何将这些信息安全地传递给 API?

我正在考虑 API 和网站之间的 client_credentials,但它似乎适用于没有用户的情况,如服务或守护进程。

我不希望 API 知道或关心用户,只希望他们经过身份验证以及他们的声明是什么。

0 投票
1 回答
76 浏览

security - OAuth2 - 受信任的客户端能否通过客户端凭据流访问用户资源

从 OAuth 网站查看对客户端凭据授予类型的解释:

客户端使用客户端凭据授予类型来获取用户上下文之外的访问令牌。

这通常被客户端用来访问关于他们自己的资源,而不是访问用户的资源。

如果客户端是受信任的应用程序(内部开发),它可以访问用户的资源吗?

从技术上讲,应用程序不是这些资源的“资源所有者”,但因为它是内部开发的“超级”应用程序,它应该能够访问它们,以实现组织的业务需求。

例如 - 想想您在 Google 中的用户。Google 地图应用程序会创建您拥有的资源(例如您在地图上“保存”的位置)。然后,一些具有“超级”权限的 Google 守护程序应用程序可以访问您创建的那些资源,以便处理它们并向您展示相关的广告。

那有意义吗?

谢谢!

西蒙。

0 投票
1 回答
456 浏览

oauth-2.0 - 有没有办法更改 Postman OAuth 2 客户端凭据请求的内容类型?

我正在尝试使用内置工具为我的请求获取 OAuth 2.0 令牌。在阅读文档时这似乎很简单,我将其设置如下: 邮递员请求的屏幕截图

问题是对令牌的请求是使用内容类型发送的application/x-www-form-urlencoded。所以我从服务器得到的响应是415 Unsupported Media Type我看不到将请求内容类型更改为application/json.

postman 控制台日志截图

我是否遗漏了什么或者是创建自定义预请求脚本的唯一方法?

0 投票
1 回答
46 浏览

oauth - oauth - 共享 client_secret

假设我在 Auth 服务器上注册了 2 个服务:

  1. 服务 A,带有client-id=service-a-idclient_secret=service-a-secret
  2. 服务 B,带有client-id=service-b-idclient_secret=service-b-secret

Auth Server 发出 JWT

现在服务 A 想要调用服务 B 并使用client credentials流。哪些服务应该client_secret与另一个服务共享它的共享?如果 Service A 使用自己的 secret 向 auth server 发送请求并获取令牌,那么service-a-secret应该与 Service B 共享,以便它可以验证 JWT 签名?

我很迷失方向,因为secret假设除了身份验证服务器和所有者应用程序之外不与任何人共享。但是,如果服务 B 想在不调用 Auth Server 的情况下验证令牌,它应该怎么做。

0 投票
1 回答
586 浏览

reactjs - oauth2 客户端凭据流 Cors 问题

我正在尝试在我的反应应用程序中使用adal-node实现客户端凭据流

我正在尝试的代码

我已经从我的本地运行http://localhost:3000/

因此,在应用程序的 Azure 活动目录应用程序注册中,我已http://localhost:3000/在 Web 重定向 URI 下添加。还尝试在 SPA 下添加它

但是当我运行它时会出现 CORS 错误

Access to fetch at 'https://login.microsoftonline.com/xxxx.onmicrosoft.com/oauth2/token?api-version=1.0' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我在这里遗漏了一些东西

当我运行 Chrome 时chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

这有效并生成有效令牌

0 投票
1 回答
50 浏览

postman - 如何创建一个 client_credential 帐户才能执行管理任务?

我正在尝试实现与该用户相同的操作,但使用带有 client_credentials 的客户端

我已经按照这篇文章创建了具有客户端凭据授予的客户端,因此我可以像这样获取访问令牌

在此处输入图像描述

但是当我尝试调用execute-action-email api时,我只收到错误 401

在此处输入图像描述

我错过了什么?