问题标签 [spring-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.
spring - 客户端密码+在spring oauth2中刷新访问令牌
我将 spring boot 用于后端,将 Android 设备用于系统的前端。现在我面临着使用 Spring-OAuth2 来保护我的资源服务器的挑战。
我有一些问题想和你讨论:
我的知识+本教程说我应该为我的移动应用程序使用 OAuth2.0“密码”授权类型来获取访问令牌。官方spring 安全教程给出了如何使用密码授权类型获取访问令牌的示例:
我的第一个问题来了:是否有可能在不发送“客户端密码”的情况下使用密码授予类型获取访问令牌?
由于可以通过反编译客户端应用程序来“逆向工程”客户端密码。没有秘密的获取访问令牌应该是可能的,因为Android的Facebook SDK也不需要移动应用程序中的client_secret。
我想这里我有点理解为什么clientID + clientSecret需要包含在上面的请求中,因为,既然已经包含了用户名+密码,应该可以生成访问令牌,那么这是否带来了一个next安全级别?它是否暗示以下(示例):我在我的 Android 客户端中以 Filip 身份登录,并且我将访问令牌 A 与每个请求一起发送到服务器。然后我以 Filip 身份登录到 Web 客户端,并尝试使用访问令牌 A 从 Web 客户端访问资源服务器,这是不可能的,因为访问令牌 A 仅针对 Android 客户端发布?
下一个问题是如何刷新获得的访问令牌?
我试图使用下面的命令这样做,但我得到“访问此资源需要完全身份验证”。获得新的刷新令牌后,我可以使用刷新令牌再次刷新我的新访问令牌吗?
谢谢
spring-security - @Post Filter 没有使用 acl 和 oauth spring security 过滤方法返回的集合
我正在尝试集成 Oauth 安全性和 acl spring 安全性。
而不是低于 oauth 表达式处理程序
我在配置之后使用了 acl 表达式处理程序
如http://krams915.blogspot.in/2011/01/spring-security-3-full-acl-tutorial_30.html中所述。
我可以在表中创建 acl 条目。但是在使用 @PostFilter 时,该方法返回的对象没有使用 acl 权限进行过滤。
有人可以帮忙吗
java - 如何在 Spring OAuth + Boot 中捕获 invalid_client
我可以将一些事件发布到事件发布器,例如成功的客户端身份验证和成功/不成功的用户身份验证。但是当客户端凭据错误时,不会发布任何事件。
以下是日志:
DEBUG::org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter::doFilter::Request is to process authentication
DEBUG::...ClientCredentialsTokenEndpointFilter::unsuccessfulAuthentication::Authentication request failed: org.springframework.security.authentication.BadCredentialsException: Bad credentials
DEBUG::...ClientCredentialsTokenEndpointFilter::unsuccessfulAuthentication::Updated SecurityContextHolder to contain null Authentication
DEBUG::...ClientCredentialsTokenEndpointFilter::unsuccessfulAuthentication::Delegating to authentication failure handler org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter$1@734b2ca6
DEBUG::org.springframework.security.oauth2.provider.error.DefaultOAuth2ExceptionRenderer::writeWithMessageConverters::Written [error="invalid_client", error_description="Bad client credentials"] as "application/json" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@37536106]
在spring-security-oauth2 的2.0.8-RELEASE中,似乎没有办法在 ClientCredentialsTokenEndpointFilter 中设置自定义故障处理程序(通过 AuthorizationServerConfigurerAdapter)。
此外,添加拦截器似乎并没有起到作用。
或者我只是做错了......
任何人都有运气使用 Spring Boot+OAuth2 捕获所有身份验证事件吗?
java - Spring security oauth2 资源服务器调用授权服务器失败
我正在尝试建立一个 oauth2 环境,其中客户端、资源和身份验证服务器在 3 个不同的地方运行。登录正常。但是当我尝试通过客户端服务器访问任何资源时,我得到了错误。我在底部定义了错误。
以下是我的资源服务器代码
资源服务器代码
OAuth2ResourceConfig
安全配置
方法安全配置
资源服务器WebConfig
以下是我的身份验证服务器配置
Oauth2Config
所以我使用远程令牌服务来验证令牌。我对资源服务器的请求没有得到服务。调试后我发现 check_token 端点返回 403 禁止。我正在使用以下客户端服务器代码。 https://github.com/sharmaritesh/spring-angularjs-oauth2-sample/tree/master/sonc-ng-ui
我在资源服务器或身份验证服务器中看不到任何错误日志。客户端服务器给我以下错误:
更新
Proramatically,当启用弹簧的资源服务器尝试调用检查令牌端点(oauth/check_token)时,我收到 403 禁止错误。而当我通过邮递员打同样的电话时,我得到了成功。
邮递员电话详情:
http://ip:port/rivigo-auth/oauth/check_token?token=6cdf8cb7-755f-4ddc-9ded-8bd1f9d4d386
授权 - 基本 cGlsb3QtY2xpZW50OnBpbG90
内容类型 - 应用程序/x-www-form-urlencoded
笔记。通过在资源服务器中放置一个调试指针并处理相关细节来获取添加到 post man 的标头和参数。因此,尽管资源服务器具有正确的数据,但似乎 spring 没有以正确的格式传递参数。
spring-mvc - WebSecurityConfigurerAdapter 和 ResourceServerConfigurerAdapter 之间的关系
我正在尝试将 Spring OAuth2 集成到 Spring MVC REST 中。大多数 Spring OAuth2 示例,只有ResourceServerConfigurerAdapter
并且一些也有WebSecurityConfigurerAdapter
。我不打算将 OAuth 与 Google、Facebook 等集成。我正在尝试为当前基于身份验证的 Spring MVC REST 提供基于令牌的身份Basic
验证。有人可以解释一下我需要什么而不是好的资源来理解单个服务器中的 Spring MVC REST +OAuth 集成吗?
目前,我的 POC 没有WebSecurityConfigurerAdapter
. 但ResourceServerConfigurerAdapter
与AuthorizationServerConfigurerAdapter
. 看起来ResourceServerConfigurerAdapter
就足够了。现在我不确定我应该如何WebSecurityConfigurerAdapter
处理在我的 Spring MVC REST 应用程序中完美运行的现有文件。
spring-security - 是否有更简单的方法来加载 Spring OAuth 客户端配置
我正在为一组需要能够相互调用传递令牌的端点进行概念验证,这些令牌是通过 OAuth 2 客户端凭据流获得的。我正在使用 Spring Boot 和相关项目来构建这些端点,我很困惑为什么框架似乎对以下代码非常固执己见:
以及随附的配置文件:
以上工作完全符合预期。如果我更改security.oauth2.client.id
为security.oauth2.client.client-id
(在 Java 代码和 YAML 中),我会收到 500 错误,其中第一行是:
如果我对所有实例变量的值进行硬编码,该代码也可以正常工作。实际上,在填充这些实例变量的每一种排列中,它似乎都可以正常工作,除了我@Value
用来填充clientId
值的那个security.oauth2.client.client-id
所以我的主要问题是:框架是否真的以这种非常具体的方式自以为是?如果是这样,为什么?而且,我可以利用这种固执己见来简化我的代码吗?
java - 如何使用spring security在运行时切换安全模型?
如何在运行时切换安全模型,以便
- 一个现有的 spring 安全组件可以产生一个
Authentication
, 和 - 现有的 spring 安全组件可以验证
Authentication
我想我解决了(2)但不能完全弄清楚(1)。
弹簧安全配置
这SwitchingAuthenticationProvider
很简单:只需委托给其他人AuthenticationProvder
(即 LDAP/OAUTH2 或其他)
(受Spring Security 在运行时切换身份验证方法的启发)。
但是是什么创造了Authentication
? 据我了解,一种选择是让GenericFilterBean
创建Authentication
如下图所示。
...其中 anAuthProviderService
将委托给创建 authentication
. 但是我怎样才能将它插入例如,相当于HttpSecurity#httpBasic()
or HttpSecurity#openIdLogin()
?
HttpSecurity#authenticationProvider(..)
奖金问题:和有什么区别AuthenticationManagerBuilder.authenticationProvider(..)
?
java - Spring - Oauth2 客户端服务器。NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName() 在tomcat中运行时
我试图在 oauth2 中开发客户端服务器。我的资源服务器和身份验证服务器已经到位。要将客户端服务器启用为 SSO,我的安全配置如下
对于 OAuth2SsoConfigurerAdapter,当我在 pom 中包含以下内容时,当我尝试在 tomcat 中部署它时出现错误。
例外:
spring-mvc - Spring OAuth - 没有 PlatformTransactionManager 类型的合格 bean
通过替换 BASIC auth,我成功地将 OAuth2 集成到我以前的应用程序(REST 服务)中。
然后我得到以下异常:
当我移除 beantransactionManagerDB2
时,它开始正常工作。我有 2 个事务管理器,因为我有 2 个连接的数据库。
由于我有 a InMemoryTokenStore
,我很好奇 a 的要求TransactionManager
。(以及为什么 Oauth 无法默认选择“transactionManager”)
不知何故,我通过 配置了一个 CustomeUserDetailService configureGlobal(AuthenticationManagerBuilder auth){}
,它在之前和现在使用单个 TransactionManager 都可以正常工作。
我使用sparklr-boot Spring Boot 应用程序将 OAuth 与我的应用程序集成。(感谢Dave Syer制作了如此简单易懂的示例)
我在用着:
- 春天 4.2.5
- 弹簧安全 4.0.4
- 春季 OAuth 2.0.9
- (没有弹簧靴)
spring - Spring OAuth2.0 - 动态注册 OAuth2.0 客户端
我正在使用 Spring 安全性设置 OAuth2.0 授权服务器。我想知道在 OAuth2.0 授权服务器启动并运行后是否有办法动态注册 OAuth2.0 客户端?
基本上,我知道我可以在配置 OAuth2.0 服务器时注册客户端,方法是扩展AuthorizationServerConfigurerAdapter
并覆盖 configure 方法以在内存中添加客户端详细信息。但是,这种方式客户端是预先注册的,我想知道如何动态添加客户端详细信息。
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
// @formatter:off
clients.inMemory()
.withClient(CLIENT_ID)
.secret(CLIENT_SECRET)
.authorizedGrantTypes("authorization_code", "implicit")
.redirectUris("http://junk/")
.scopes("cn")
.accessTokenValiditySeconds(600);
// @formatter:on
}