我有一个使用spring-security-jwt和spring-security-oauth2的Spring Boot应用程序。我有一个扩展UserDetails的自定义User对象和一个从loadUserByUsername方法返回此对象的自定义UserDetailsService。
但是,当我使用身份验证对象的getPrincipal方法并试图强制转换到我的自定义用户对象时,它失败了,因为主体返回的字符串与我的自定义用户对象相反。
我的实际目标是在每个方法调用中消除对持久层的访问,因为这些方法调用需要自定义对象详细信息,这是最重要的。
可以通过将AccesStokenConverter
(它间接保存UserDetailsService
)设置为JWTAccesStokenConverter
来实现这一点。请参见AccesStokenConverter()
方法。
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
// Other configurations omitted
@Autowired
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.tokenStore(tokenStore())
.accessTokenConverter(accessTokenConverter())
.tokenEnhancer(accessTokenConverter())
.authenticationManager(authenticationManager);
}
@Bean
public TokenStore tokenStore() {
return new JwtTokenStore(accessTokenConverter());
}
@Bean
public JwtAccessTokenConverter accessTokenConverter() {
DefaultUserAuthenticationConverter duac = new DefaultUserAuthenticationConverter();
duac.setUserDetailsService(userDetailsService);
DefaultAccessTokenConverter datc = new DefaultAccessTokenConverter();
datc.setUserTokenConverter(duac);
JwtAccessTokenConverter jatc = new JwtAccessTokenConverter();
jatc.setAccessTokenConverter(datc); // IMPORTANT
jatc.setSigningKey("your-signing-key");
return jatc;
}
@Bean
public DefaultTokenServices tokenServices() {
DefaultTokenServices tokenServices = new DefaultTokenServices();
tokenServices.setTokenStore(tokenStore());
tokenServices.setSupportRefreshToken(true);
return tokenServices;
}
}
问题内容: 我正在尝试在JFrame中使用特殊字体,但遇到了问题。我有一个这样定义的JLabel: 并且我有一个名为CUSTOMFONT-MEDIUM.TTF(TrueType字体)的文件,但是编写了以下内容: 代码会编译,并且一切正常,除了不会显示“ lab”,因此没有文本。我想这是因为我从未指定字体大小,但是我所做的任何尝试都失败了。有人可以帮我吗? 问题答案: 您创建的字体必须先在中注册,以
我们希望使用外部身份提供者将现有的Spring Security项目从自定义用户名/密码实现(UserDetailsService等)迁移到oauth2登录。 但是,当通过外部提供程序登录时,安全上下文中的身份验证对象是一个,主体是一个。 由于我们在应用程序中使用的都是自定义身份验证主体,因此我们希望将转换为自定义对象。 对于oauth2资源服务器,似乎有一个API可让您将JWtAuthentia
我正在尝试测试我的控制器方法,它将输入参数作为我应用程序中的一个对象。我知道如何用字符串作为输入参数进行测试,但不知道如何用定制的对象进行测试。 下面是我应用程序中的代码 我认为下面的测试代码是测试的方法之一。但它失败了 当我运行上面的测试时,我得到一个错误,说“实际上,这个模拟没有任何交互”。 你能帮我把定制对象传递给MockMvc post方法吗。
问题内容: 我在这里使用答案来尝试通过数据上传进行请求,但是服务器端有不同寻常的要求。该服务器是一个PHP脚本,需要对行,因为它是期待一个文件上传。 但是,在客户端,我想发布一个内存中的缓冲区(在这种情况下为String)而不是文件,但是让服务器像对待文件上传一样处理它。 但是,使用I无法在行上添加必填字段。因此,我尝试使用,但这只是将其放在单独的行上。 我如何才能进入一行,而无需先将其写入文件然
servlet堆栈(web)中的Spring Security性允许您在OAuth2授权代码授予流中定制OAuth2登录重定向endpoint基uri(如这里给出的)。我正尝试用Spring WebFlux对反应堆栈做同样的操作。这里的github问题提到了Oauth2LoginSpec上的authorizationRequestResolver和authenticationMatcher,它们可
问题 如何使用自定义中间件在调用下一个上下文时获取响应正文? 到达await _next行后。从调试中调用(上下文); 不从操作结果返回 JSON 数据 获取用户菜单 我需要从上面的操作结果中得到响应体。 我的代码我试试: https://i.stack.imgur.com/PHUMs.png 当有效令牌时,它会在浏览器谷歌上返回如下数据 但在我的应用程序浏览器上返回无效令牌