问题标签 [api-authorization]

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 回答
24 浏览

javascript - 只有当我在 Spotify API 上发出第一次获取请求(单击搜索方法)时,我才会得到 401,之后就可以正常工作了。请帮我解决它

当我提出第一个请求时,似乎我没有授权。但是在那之后的所有其他搜索,我的授权都很好。为什么?我如何解决它?

0 投票
0 回答
8 浏览

api - Swagger 是否支持非标准 API 密钥授权?

首先,我对 API 和 Swagger 还是很陌生。我和一些朋友得到了一个任务来记录一个已经存在的公共 API,在我们的例子中是这个:https ://favqs.com/api 。我们决定这样做的方式,也是为了帮助我们熟悉定义和记录 API,将文档的内容从该网页手动导入 Swagger。

到目前为止,我们的流程是:打开https://favqs.com/api,获取路径并在 Swagger 中编写,获取其方法并在 Swagger 中编写,定义模式,编写请求正文,编写响应,添加我们的对所有内容都有自己的描述,编写示例,修复我们犯下的任何语法错误,冲洗并重复。

到目前为止一切顺利,但后来我们注意到,当您针对 Swagger 的模拟服务器测试 API 时,它会自动生成一个小命令,因此我们可以使用 curl 通过 shell 或 powershell 运行相同的测试。这很棒,因为我们可以简单地更改命令中的 URL 来测试真实的、实时的 API。然后我们很快发现我们需要设置我们的 API 密钥才能测试真正的交易,这就是我们目前陷入困境的地方。

API 的文档指定了应如何格式化标头以进行授权,并特别提到格式Authorization: "YOUR_APP_TOKEN"不起作用。现在问题来了:如果您尝试在 Swagger 中设置 apiKey 授权,它将产生 API 不接受的确切结果。

以下是我们当前使用的代码的相关部分:

当然,它会生成 API 不接受的标头格式。

要成功使用 API 进行授权,我相信我们必须生成以下标头:

我们探索的第一件事是在 ApiAuthToken 下使用type: object而不是type: apiKey,但这不被 Swagger 接受。然后,我们阅读API 密钥HTTP 授权的 Swagger 文档页面,以及一般身份验证和授权页。到目前为止,我们还没有找到关于如何在 Swagger 中成功描述这个 API 的授权方案的答案。当然,记录这些类型的障碍也是我们任务的一部分,但我们仍然很好奇,想知道是否以及如何在 Swagger 中绕过这些障碍,以及这是否真的是定义 API 的非标准方式或者我们只是不知情。作为评论,我们还注意到此 API 中的其他行为似乎不符合标准,例如即使请求不成功也响应状态码 200,但这超出了这里问题的范围。

请注意,我们使用的是 OpenAPI 3.0。任何帮助表示赞赏。

0 投票
0 回答
30 浏览

api - API 网关级别授权和响应策略实施

我目前正在寻找一种将授权集成到具有 API Gateway (Kong) 的微服务架构的方法。对于身份验证,Keycloak 正在通过 Kong 使用和执行。现在我想创建策略来授予对网关后面资源的访问权限(例如,资源只能由创建者或管理员访问)。OPA似乎是完美的选择,但它似乎不能用于从响应中剥离字段。例如,如果我想隐藏服务已添加到客户端响应中的某些字段,或者只想在某些字段上允许 PATCH 不能使用 OPA。我是否遗漏了什么,或者您知道我的用例有更好的解决方案吗?

0 投票
1 回答
27 浏览

reactjs - 如果我的网站没有登录页面,如何设置 api 授权

我想在我的反应应用程序中设置授权。这是出于安全原因,所以我的 API 只能由使用我们网站的人访问。但我的网络应用程序没有用户登录,也不需要任何登录。我的后端使用休息 api。

  • 我将如何使用令牌进行授权?
  • 如何在页面加载之前设置初始令牌?
0 投票
1 回答
59 浏览

identityserver4 - IdentityServer4:如何为 Google 用户设置角色?

我有 3 个应用程序:

  • IdentityServer4 API,它提供 Google 身份验证并提供访问令牌以授权资源 API。
  • 一个简单的资源 API,它提供来自 DB 的一些数据。
  • React 中的一个简单客户端,它有 4 个按钮:
    • 登录,用于 Google 身份验证
    • 登出
    • 获取数据 - 使用访问令牌对资源 API 的简单请求,并从 Db 获取数据
    • 获取用户数据 - 返回用户配置文件和令牌(用于调试目的)

我没有放任何示例代码,因为我的问题与代码无关,我知道我错过了,我寻求指导。

工作流程运行良好:用户按下登录按钮,它被重定向到 IdentityServer4 API for Google Auth。从那里它被重定向到客户端的回调页面,然后从那里重定向到索引页面。我收到用户数据和令牌,我可以从资源 API 请求数据并且它正在工作。

我的问题是:如何为 Google 用户赋予角色?我没有用户保存在数据库中。我想要三种类型的用户:超级管理员、管理员、查看者,并且这些角色中的每一个都有可以访问的有限端点。

为了限制他们的访问,我看到我可以使用基于声明的授权基于角色的授权

所以,我的问题是如何给想要登录我的应用程序的 Google 用户一个特定的声明/角色?工作流程是什么?我必须先将它保存在数据库中吗?或者有来自谷歌的服务,我可以添加一个电子邮件地址并为该地址选择一个角色?

非常感谢你 !

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 投票
1 回答
79 浏览

javascript - 创建授权码 JWT 令牌的代码方式

我正在寻找一种创建 JWT 的方法,我可以使用 Postman Grant Type “授权代码”,使用现有的回调 URL(我无法修改 / localhost 是不允许的)。

我想创建一个 NodeJS / Go 小型应用程序,它可以模仿 Postman 授权此流程的方式。

AFAIK,唯一的方法是在由代码控制的窗口中运行重定向 url,并在登录后提取授权代码以获得正确的令牌。

登录页面后似乎无法提取此代码...

如果有人能指出我正确的方式:)

将添加一个我一直在玩的小 JS 代码(使用 puppeteer 来模仿 Postman 浏览器),自 以来就失败了"Invalid authorization code: 2j3ZN75HXNz4Uw4JsS3n8xhQpzVfa73Y",尽管这段代码绝对是正确的。

谢谢

编辑

代码确实有效,所以这就是我的想法。只是需要一些调整。

0 投票
2 回答
232 浏览

asp.net-core-webapi - 为什么RequiredScope属性没有任何作用?

根据此 Microsoft 文档,您应该能够将 [RequiredScope("SomeScopeName")] 之类的属性应用于控制器级别或操作级别以保护 API。但是当我在我的 API 中尝试它时,它似乎根本没有任何效果 - 无论我使用什么范围名称(我确保我在令牌中没有该名称的范围),我总是正确的进入我应该失败的 API 操作。但与此同时,我的策略属性,例如 [Authorize(Policy = "PolicyName")],工作得很好。我错过了什么?

更新

这是我的 Startup.cs

这是我的 API 控制器

请注意,我在控制器级别应用了此处的属性。但是,如果我将它们移到操作级别并没有什么区别——RequiredScope 属性总是被忽略。

更新-1

我在上次更新后遗漏了 AddAuthorization,因为我认为这与我的问题无关。我现在将其添加回来,其中包含一些我使用的策略。再一次,这些政策都运行良好,我不明白这与我遇到的问题有什么关系。

这是 access_token 标头

在此处输入图像描述

这是 access_token 的主体 在此处输入图像描述 在此处输入图像描述

0 投票
0 回答
42 浏览

vue.js - 如何在 Vue js 的 fetch 请求中发送 Auth 标头中的 APIKey

我正在尝试将发布请求发送到启用了API 密钥类型授权的 url 。我可以通过邮递员发送请求。API 的响应非常好,但是当我在 Vuejs 中获取时。我无法使用 fetch 发送 POST 请求。附上邮递员的截图。 在此处输入图像描述

我在 Vuejs 中使用的尝试过的代码是:-

我得到的错误 在此处输入图像描述

谁能告诉我我的代码到底出了什么问题?

0 投票
0 回答
24 浏览

go - 从 Twitter OAuth2 检索电子邮件

文档似乎没有显示检索电子邮件的方法(使用 OAuth1 时除外)。

这是我尝试过的:

如果我们/2/users/me使用该访问令牌:

但即使成功,Twitter 的 API v2 上也没有包含电子邮件的字段。

问题是,我做错了什么以及如何从 OAuth2 的 access_token 中检索电子邮件?或者是否可以使用/转换该访问令牌以从 Twitter API 1.1 的端点检索,因为我也尝试过,它也给出了215 Bad Authentication Data.