问题标签 [oauth2orize]

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

node.js - 自己的移动客户端的 OAuth 2.0 身份验证

我正在使用 node.js 开发一个应用程序,它也将有一个移动客户端。我希望使用 OAuth 2.0 进行身份验证。有什么好的模块可以让我拥有 OAuth 2.0 身份验证服务器吗?

我查看了 Passport 的一个子模块“OAuth2orize”。我发现它已经足够好了,但真正的问题是了解它将如何为我自己的应用程序工作(示例和文档指定了第三方授权)。

基本上我想要的是客户端使用客户端 ID、用户名、用户密码登录,然后我在验证上述三件事后给他一个令牌。但是 Oauth2orize 的问题在于有重定向 URI,这让我很困惑。

请帮助我了解如何使用 Oauth2rize 或任何其他非常好的模块来实现这一点。或者,如果它足够简单,我也可以自己动手,但这对安全性来说是个好主意吗?

0 投票
1 回答
7220 浏览

node.js - 使用 OAuth2 保护 nodejs/sailsjs API

我用sailsjs 开发了一个REST API,我想添加OAuth2 授权来保护这个API。我对 OAuth 很陌生,我不知道从哪里开始。

我发现了几个可用于此目的的模块,例如 oauth2orize 及其用法示例https://github.com/aaron524/sails-oauth2-provider-example但我不完全理解这是如何在内部工作的。

基本上,我将有几个客户端使用我正在开发的 API: - 我信任的客户端,我想与“资源所有者凭据授权”一起使用 - 我不信任的客户端,将使用连接授权码流程

我正在考虑在sails应用程序中向客户端模型添加一个受信任的属性,然后当用户登录应用程序时: - 他将直接访问其资源(受信任应用程序的情况) - 他将被要求批准或拒绝应用程序访问他的资源(不受信任的应用程序的情况)

这是一个好方法吗?关于如何根据客户信任级别选择相应策略的任何指示?

更新

我使用我找到的几个教程和项目在 GitHub 上设置了以下项目。

这个项目还没有功能。

当用户通过应用程序使用 API 时,我仍然不清楚如何选择正确的授权类型(授权码与资源所有者的密码)。如何将此检查集成到政策中?

我没有设法在 OAuth 端点(/oauth/authorize、/oauth/token)和对 oauth2orize 的调用之间创建链接。任何想法 ?

0 投票
1 回答
198 浏览

node.js - OAuth2orize 登录流程无限循环

希望为我的网站设置 OAuth2 端点。我在 OAuth 服务器上使用 OAuth2orize,在客户端服务器上使用 passport-oauth。

我几乎逐字逐句地使用oauth2orize 示例来使其首先工作。

当我开始登录流程时,它会将我发送到登录页面(到目前为止很好),我登录并将我发送到对话框(也很好),然后当我单击允许时,它只是将我循环回到相同的页面一遍又一遍地翻页(允许/拒绝对话框)。

有人知道我做错了什么吗?我知道它实际上是把我送回我的应用程序(使用代码,我的应用程序应该交换一个令牌),但它似乎只是让我回到对话框:

0 投票
0 回答
206 浏览

javascript - 围绕 oauth2 以及应该存储 access_token 和 refresh_token 的位置感到困惑

对如何保护此设置有更深入的了解会很棒:

  • Node.js / ExpressJS / Oauth2orize 受 oauth2 保护并托管在api.domain.com

  • domain.com通过 Node.js / ExpressJS 服务器托管的 Backbone.js 应用程序

目前发生以下情况:

1 - 用户在浏览器中访问应用程序,提供用户名和密码,这些被发布到包装器 ( domain.com/login)

2 - 包装器使用 client_id 和 client_secret 扩充用户名和密码,并将这些连同用户名和密码一起传递到api.domain.com/oauth/token. 这是为了保证 client_id 和 client_secret 的安全,而不仅仅是在 javascript 应用程序中直接处理 api。此过程仅用于身份验证,一旦存在令牌,则计划是让 JS 客户端直接与 api 通信。

3 - api.domain.com/oauth/token 检查用户和密码凭据,如果凭据通过,则发出 refresh_token 和 access_token,或者返回 401

4 - 包括 refresh_token 和 access_token 的令牌响应作为对domain.com/login请求的响应返回给 javascript 应用程序。当前,JavaScript 客户端处理设置授权标头并使用 refresh_token 获取新的 access_tokens。

我有几个问题:

首先,我对access_token和refresh_token感到困惑,我怀疑我根本不应该将refresh_token传递给浏览器-是否应该将其缓存在代理上并通过代理执行刷新?或者将 refresh_token 传递给 Javascript 应用程序是否可以?

将 access_token 或 refresh_token 缓存在浏览器中是否可以?例如 cookie 或本地存储。如果是这样,这如何安全?如果没有,用户在刷新浏览器时是否必须重新进行身份验证?

如果有人可以说明在处理包装服务器和 JavaScript 应用程序中的 refresh_token 和 access_token 方面采取的“正确”步骤,那将不胜感激。

0 投票
0 回答
249 浏览

node.js - 使用 OAuth2 保护 nodejs 应用程序,不会自动重定向到允许/拒绝页面

我已经建立了一个项目来保护使用 OAuth2 的 Sails 应用程序:https ://github.com/lucj/sails-oauth2-api

我无法解决授权代码授予的问题。

基本上,这是我遵循的步骤:
- 运行 Sails 应用程序
- 运行 unTrustedClient(示例文件夹中的节点 untrustedClient.js)
- 从 Web 浏览器,然后发出以下 URL:

注意:client_id 的值是应用程序启动时在sails 终端中为untrustedTestClient 显示的值

这会将我重定向到“登录”页面,这很好。

https://dl.dropboxusercontent.com/u/2330187/login.png

但是,当我提交凭据(默认为 me@gmail.com /password)时,我被重定向到 /index 而不是原始 URL(上面的那个)。

https://dl.dropboxusercontent.com/u/2330187/index.png

我需要重新发布上面的 URL 以显示对话框页面(带有允许/拒绝选项的页面)。

https://dl.dropboxusercontent.com/u/2330187/allow_deny.png

我正在使用“connect-ensure-login”中间件。

我该如何解决这个问题,以便在我输入凭据后自动完成重定向?

0 投票
1 回答
1327 浏览

node.js - 在 grant_type=password (oauth2orize) 上未定义 client_id

我正在使用 oauth2orize 和护照在 nodejs 中创建一个 API,但是当我请求令牌时,client_id 参数未定义。

授权:

邮政:

为什么客户端参数未定义?

非常感谢

0 投票
1 回答
474 浏览

oauth-2.0 - oauth2orize 示例返回 AuthorizationError: not authorized

我已经下载了oauth2orize 提供程序代码示例和文档中建议的示例 oauth 客户端,但出现以下错误:

500 AuthorizationError: 在 /Users/trevorallred 验证时未授权 (/Users/trevorallred/projects/pics/node-soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/middleware/authorization.js:131:36) /projects/pics/node-soa/oauth2orize/examples/all-grants/oauth2.js:180:14 在 Object.exports.findByClientId (/Users/trevorallred/projects/pics/node-soa/oauth2orize/examples/all- grants/db/clients.js:24:10) 在exports.authorization.res.render.transactionID (/Users/trevorallred/projects/pics/node-soa/oauth2orize/examples/all-grants/oauth2.js:174: 16) 在 /Users/trevorallred/projects/pics/node-soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/middleware/authorization.js:167:9 在通过 (/Users/trevorallred/projects/pics /node-soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/server.js:262:26) 通过 (/Users/trevorallred/projects/pics/node-soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/server.js:280:9) 在通过 (/Users/trevorallred/projects/ pics/node-soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/server.js:271:11) 在 Server._parse (/Users/trevorallred/projects/pics/node-soa/oauth2orize/examples/ all-grants/node_modules/oauth2orize/lib/server.js:285:5) 在授权 (/Users/trevorallred/projects/pics/node-soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/middleware/授权.js:118:12)_parse (/Users/trevorallred/projects/pics/node-soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/server.js:285:5) 在授权 (/Users/trevorallred/projects/pics/node -soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/middleware/authorization.js:118:12)_parse (/Users/trevorallred/projects/pics/node-soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/server.js:285:5) 在授权 (/Users/trevorallred/projects/pics/node -soa/oauth2orize/examples/all-grants/node_modules/oauth2orize/lib/middleware/authorization.js:118:12)

我在这里运行客户端:http://localhost:3002/ 我单击“与 example-oauth2orize 连接”的链接

它将我重定向到提供者:http://localhost:3000/login

使用“bob”登录后,我被发送到此错误页面。

我所做的唯一修改是示例客户端中的 oauth-config.js。

在看到这个错误报告后,我尝试修改 oauth-consumer-config.js,但它似乎没有改变任何行为。

0 投票
1 回答
382 浏览

strongloop - 为什么 loopback-component-oauth2 完全包含 oauth2orize 的源代码?

我正在测试环回组件以使用它来制作我的产品。目前,loopback-component-oauth2 在其源目录中有oauth2orize源代码。如您所知,oauth2orize是一个实现 oauth2 协议细节的节点库。我认为 loopback-component-oauth2 只需require('oauth2orize')使用oauth2orize库就足够了。将oauth2orize源代码包含到“loopback-component-oauth2”中是否有任何具体原因?

提前致谢。

0 投票
1 回答
771 浏览

angularjs - Angular + Node + Express + Passport + oauth2orize 独特的 CORS 问题

我已经构建了一个用于本地身份验证和 Facebook 身份验证的 API。

我正在使用nodeexpresspassportoauth2orize进行授权过程。

我现在通过终端应用程序和 API 测试套件完美地运行 API,但是,当从 Angular 调用我的身份验证端点时,我收到以下信息:

本地认证:

脸书认证:

我过去遇到过 CORS 问题,并集成了https://www.npmjs.com/package/cors上的npm ' cors ' 中间件模块

CORS 初始化:

对于我之前的问题,这已经足够了,但是,对于这些新的 CORS 问题,它没有帮助。

我还注意到,在 Firefox 中,如果我单击错误消息,则会打开一个新的对话框窗口,并且服务器会继续正确授权用户。

有人可以帮忙吗?

更新 1:

检查评论以获取调试信息的屏幕截图。

更新 2:

登录流程中执行的最后 2 个请求的响应标头。

  1. 204:

    /li>
  2. 302:

    /li>
0 投票
1 回答
2712 浏览

node.js - 使用 Scopes 保护 API(oauth2orize、passport、express、Nodejs)

我正在尝试使用 node/express 创建一个 API,并使用 Passport 和 oauth2orize 保护它。我已经让 API 正常工作,我已经让 oauth2 工作正常,但我似乎无法弄清楚如何使用范围实现保护 API 方法。

oauth2orize 令牌hander-outer:

护照持有人令牌检查器:

API 安全性:

我找不到访问通过passport.authenticate 传递给passport.use 的“范围”选项的示例。我以为它在 req 对象中,但我在其中找不到它。有什么帮助吗?