问题标签 [spring-security-oauth2]

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 投票
2 回答
9741 浏览

spring - 使用 Spring Security 的 OAuth 2.0 中的 resourceId 是什么意思

org.springframework.security.oauth2.provider.filter 中的 OAuth2ProtectedResourceFilter:

我认为它没有用。这段代码检查什么?

0 投票
1 回答
29444 浏览

spring-security - Spring security oauth 2 简单示例

我尝试根据官方教程Sparklr2/Tonr2实现我自己的示例。web.xml一切看起来都不错,但是当我从Tonr2实现中删除时,弹簧安全过滤器出现异常:

没有为当前请求建立重定向 URI

我不明白我应该使用哪个 URL。这是我的代码,用于客户端实现:

对于提供者:

我只是希望我的客户在没有弹簧安全的情况下工作。当我需要受保护的资源时,我只想在提供者端登录。

0 投票
1 回答
5956 浏览

java - 我可以/应该在春季安全中的每个请求中刷新 OAuth2 令牌吗

我们使用用户名密码授权将我们的 JS 客户端连接到我们的 REST 服务器。在某种程度上,oauth/token 返回的令牌是我们的会话,因为它允许在有限的时间内访问后端。

每次我们使用令牌向后端发出请求时,我们都希望刷新该会话/令牌。

我知道服务器发出了这个刷新令牌,我可以在它过期后用它来刷新我的令牌。

问题是:我不想让客户端负责捕获令牌过期异常并在令牌过期之前重新进行身份验证或安排刷新。我希望令牌自行刷新,直到在有限的时间内不再使用它 - 就像会话一样。(我也不希望它为每个“数据”请求发出刷新请求,尽管我想我记得读过,刷新令牌只有效一次..?!)

有没有办法在春季安全中做到这一点,或者我是否必须构建令牌存储的一些自定义实现或我选择的任何部分?

由于我真的找不到答案(因此发布了帖子),我在想:也许这样做并不明智,尽管我想不出为什么。如果我可以窃取令牌,我也可以窃取刷新令牌。所以我想我并没有真正看到首先拥有刷新令牌的意义..

编辑

为了回应卢克泰勒的回答,我将澄清我们的用例。

  • 我们有一个 REST 服务器,它像人一样保存应用程序数据。而且还提供对我们内容管理的访问权限,并允许客户在 Facebook 上发帖。它封装了应用逻辑和数据存储
  • 我们已经有一个成熟的客户端应用程序,它有自己的安全层,只需通过客户端凭据流访问我们 REST 服务器上的数据。谁可以做客户端决定的事情
  • 我们有几个中小型应用程序,例如 facebook 上的联系人应用程序,它们也使用客户端凭据访问 REST 服务器上的数据
  • 我们现在正在开发一个仅使用 javascript 的客户端应用程序,它将访问 REST 层来完成大型客户端应用程序所做的所有事情,但还需要提供一种方法来验证单个用户并允许多租户。因此,这个新的客户端应用程序使用用户名-密码授权进行身份验证,并使用方法级安全性来授权用户

因此,我们有一个 REST 服务器,它需要提供对我们受信任的应用程序的完全访问权限,该应用程序执行自己的安全工作,并且同一台服务器需要为我们新的多租户 JavaScript 客户端应用程序的用户提供访问权限。在生产中,我们将有多个 REST 服务器,每个服务器都有自己的数据库,但核心始终相同,因此理论上一台服务器应该能够处理所有问题。

0 投票
1 回答
117 浏览

java - 我们得到这个全栈 webapp 架构了吗?

我正在开发一个基于 spring-java 的全栈 Web 应用程序。该应用程序当前分为两个项目,每个项目都会在构建时生成一个war文件。一个项目(称为 UI)用作应用程序的前端。UI 中没有太多的业务逻辑。主要是 HTML 模板,以及 JS/CSS 和其他资源。另一个项目(称为服务器)在提供身份验证、业务逻辑、数据库服务、面向外部世界的 REST API 等方面具有很大的重要性。

我遇到了很多问题,尤其是在整个应用程序中进行安全工作时,因为 UI 项目没有直接的方法来验证用户或检查用户角色等。UI 依赖于调用 REST OAuth2 密码流到服务器进行身份验证。所以身份验证本身工作正常,但我很难检查用户访问角色或 UI 项目中任何代码中的任何其他细粒度权限。

在我深入挖掘并尝试使这一切正常工作之前,这里有几个问题要问大师:a) 这种设计是构建 Web 应用程序的可接受方式之一吗?b) 如果我试图将这两个项目捆绑在一场战争中,我应该注意哪些问题?

我希望这是重点,但如果您需要更多细节,请告诉我,我很乐意添加颜色。

0 投票
2 回答
44338 浏览

spring - 在 Spring Security OAuth2 中使用用户名密码授权中的刷新令牌请求新的访问令牌

我们使用用户名密码授权从我们的身份验证服务器获取访问令牌。我们希望在访问令牌过期之前使用提供的刷新令牌刷新访问令牌,直到用户注销或关闭客户端应用程序。

但是,我找不到任何有关如何发出此刷新令牌请求的示例。

为了获得令牌,我们调用如下:

所以刷新我希望调用看起来像这样:

或者可能

但它只会给我一个401 ..

哦,是的,也许我需要添加clientId?我不能使用客户端密码,因为没有(请参阅上面的获取令牌的请求)。毕竟身份验证是使用用户名和密码完成的。

我认为我们的服务器配置是正确的,所以我不会在这里发布。如果我的示例请求之一应该有效并且您需要查看重要的配置部分,我将添加它们。

谢谢!

0 投票
1 回答
492 浏览

java - Spring Security OAuth2 服务器端,如何在所有请求中要求 client_id 和 client_secret

我正在与 Spring Security OAuth2 集成,并且我坚持尝试对每个请求都要求 client_id 和 client_secret。所以我希望我的所有请求都需要 access_token、client_id 和 client_secret,这可行吗?

0 投票
1 回答
797 浏览

java - 在不同域中运行时,Cloudfoundry UAA 资源应用程序 (/api) 访问被拒绝

我在 localhost:8080 上使用 /api 和 /app 运行 /uaa 没有问题。授权代码流程和隐式流程都可以完美运行。

然而,我发现在同一个域上运行所有应用程序几乎不现实,所以我决定在不同的域上测试它们。这是我所做的: - 在 localhost:8080 上启动 /uaa - 在 localhost:8181 上启动 /api - 在 localhost:8282 上启动 /app - 将所有 url 配置更改为指向正确的地址

授权流程仍然运行良好。但是,我得到了拒绝访问,导致隐式流出现 javascript 错误。

当 /app 尝试联系 /api 时,/api 会抛出这个:

似乎 /api 无法从身份验证上下文中检索用户 marissa 的身份,因为它只有匿名用户(在 localhost 上运行所有三个应用程序将显示“从安全 http 会话中检索到的 marissa”)。

我想知道在不同域上配置 UAA 及其示例的正确方法是什么。

0 投票
1 回答
554 浏览

oauth-2.0 - 如何在spring security oauth 2中获取隐含流的访问令牌

如何在隐式调用中获取访问令牌作为 json 响应。我需要在 spring-servlet 中添加哪些自定义过滤器?

0 投票
0 回答
6386 浏览

spring - 如何使用 Spring Social 进行 REST 身份验证?

我已经实现了 Spring 安全示例中概述的 Spring Social + Spring Security(以及 spring security java config)。我当时报告了几个问题(请参阅https://jira.springsource.org/browse/SEC-2204)所有这些问题都已解决,并且我的安全性工作正常。

但是,我想更改我的安全实现并使用 RESTful 身份验证。Spring oauth/oauth2 ( http://projects.spring.io/spring-security-oauth/ ) 解决了这个问题,但我看不出 Spring Social 将如何适应那张图片?尽管 Spring social 在幕后使用 oauth 与 Facebook/Twitter 对话,但我不认为 Spring Social 的注册表单和其他特性是为 restful api 而构建的。

任何例子或想法肯定会有所帮助。

更新这篇文章:(2014 年 4 月 6 日)

  • 我已经建立了一个使用我的 API 的 (PHP) 站点。
  • 这个 php 站点(我们称它为客户端站点)使用 Facebook PHP SDK 来注册自己的用户。这是一种完全独立的方式来收集自己的成员。
  • 但是,一旦用户注册,客户端站点就会传递用户名、电子邮件、密码、名字、姓氏数据及其 client_id 和客户端密码,并使用 OAuth2 授权类型client_credentials身份验证。
  • 这传入的用户数据会在主系统上创建一个用户记录!(主要应用)
  • 在此之后,每次客户端站点通过 OAuth2 授权类型密码调用主系统并发送用户名和密码client_idclient_secret获取“身份验证令牌”并能够使用此令牌与主站点进行通信。

似乎还有很长的路要走,但解决了在主系统上保留用户记录的问题。我很好奇是否还有其他方法可以做到这一点?请指教。

0 投票
1 回答
252 浏览

java - oauth2 授权与 3.0.5 spring security

我是春季安全新手。是否可以在 spring security 3.0.5 中使用 oauth2 授权?我需要实现资源所有者密码流。

我问这个是因为示例在节点中sparklr使用了 spring security 3.0.5 中不存在的属性。authentication-manager-refhttp

谢谢