相关疑难解决方法(0)

使用Spring Security 3.2.0.RELEASE,如何在纯HTML的页面中获取CSRF令牌而没有标记库

今天我从具有独立java配置依赖性的Spring Security 3.1.4升级到包含java config的新3.2.0版本.CSRF默认打开,我知道我可以在我的重写配置方法中使用"http.csrf().disable()"禁用它.但是假设我不想禁用它,但我需要在登录页面上使用CSRF令牌,其中没有使用JSP标记库或Spring标记库.

我的登录页面纯粹是HTML,我在使用Yeoman生成的Backbone应用程序中使用.我如何在表单中或作为标题包含HttpSession中包含的CSRF令牌,这样我就不会得到"未找到预期的CSRF令牌.您的会话是否已过期?" 例外?

spring spring-mvc spring-security

23
推荐指数
1
解决办法
4万
查看次数

替换AuthorizationRequest后,HttpSession为null

下面给出了快速重现问题的完整代码和说明.


问题:
HttpSession成为null以后的自定义实现DefaultOAuth2RequestFactory替换当前AuthorizationRequest与保存AuthorizationRequest. 这将导致后续请求失败/oauth/token,因为CsrfFilter在之前的春季安全过滤器链/oauth/token端点无法找到一个session Csrf tokennull session与比较requestCsrf token.


在错误期间控制流量:

以下流程图说明了步骤14步骤15以某种方式 - null通知HttpSession.(或者可能不匹配a JSESSIONID.)在步骤14SYSO开始时的A 表明确实存在确实包含正确的.然而,不知何故,当步骤15触发从URL 处的客户端返回到端点的呼叫时,已经变为. CustomOAuth2RequestFactory.javaHttpSessionCsrfTokenHttpSessionnulllocalhost:8080/loginlocalhost:9999/oauth/token

断点被添加到HttpSessionSecurityContextRepository下面的调试日志中提到的每一行.(它位于在Maven Dependencies所述的夹authservereclipse项目.)这些断点确认HttpSessionnull,当向最终请求/oauth/token在下面的流程图制备.(左下角流程图)null …

spring spring-mvc spring-security spring-boot spring-oauth2

23
推荐指数
1
解决办法
1849
查看次数

使用spring security oauth2进行双因素身份验证

我正在寻找有关如何使用spring security OAuth2实现双因素身份验证(2FA)的想法.要求是用户仅需要对具有敏感信息的特定应用程序进行双因素身份验证.这些webapps有自己的客户端ID.

我想到的一个想法是"误用"范围审批页面以强制用户输入2FA代码/ PIN(或其他).

示例流程如下所示:

不使用和使用2FA访问应用程序

  • 用户已注销
  • 用户访问不需要2FA的应用A.
  • 重定向到OAuth应用,用户使用用户名和密码登录
  • 重定向回应用程序A并且用户已登录
  • 用户访问app B,也不需要2FA
  • 重定向到OAuth应用,重定向回应用B,用户直接登录
  • 用户访问应用程序S的确实需要2FA
  • 重定向到OAuth应用,用户需要另外提供2FA令牌
  • 重定向回应用程序S并且用户已登录

使用2FA直接访问应用

  • 用户已注销
  • 用户访问应用程序S的确实需要2FA
  • 重定向到OAuth应用,用户使用用户名和密码登录,用户需要另外提供2FA令牌
  • 重定向回应用程序S并且用户已登录

你有其他想法如何计算这个吗?

spring two-factor-authentication spring-security-oauth2

20
推荐指数
1
解决办法
1万
查看次数

Spring Security OAuth2,版本2.0中带有自定义TokenGranter.+

在以前版本的OAuth2中,可以通过将自定义标记granter添加到<authorization-server>元素中的xml配置来添加它.

我想知道如何使用AuthorizationServerConfigurerAdapter使用Java Config扩展授权服务器,而不会丢失包含隐式,客户端凭据,刷新令牌和授权代码授权类型的默认配置.

首次尝试使用@Component创建TokenGranter:

@Component("customTokenGranter")
public class CustomTokenGranter {
     //implementation
}
Run Code Online (Sandbox Code Playgroud)

这导致依赖性解决异常,因为构造Granter所需的tokenServices无法自动装配.

第二次尝试使用configure方法

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception
{
    endpoints
        .tokenGranter(new CustomTokenGranter(endpoints.getTokenServices(),
                endpoints.getClientDetailsService(), endpoints.getOAuth2RequestFactory()));

}
Run Code Online (Sandbox Code Playgroud)

使用此选项,将不会注册默认授权类型.

我也尝试了低阶的第二种配置,但没有成功.我还可以做些什么来添加自定义授权类型?

java spring spring-security-oauth2 spring-java-config

8
推荐指数
3
解决办法
8762
查看次数