我有2个应用程序运行,一个是资源服务器,我有需要认证的信息,以查看文本。然后我有授权服务器提供令牌。现在我可以使用postman或Insomnia,添加auth_url、token_url、client_id、client_secret并获得令牌。我将令牌添加到header,并使用header向资源服务器执行get请求,它工作得很好。
我想被重定向到:
本地主机:9001/登录
我用inmemory用户登录,然后它将我重定向回localhost:9000/home,我看到消息。
@SpringBootApplication
@RestController
@EnableResourceServer
@EnableOAuth2Client
public class SampleResourceApplication extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**")
.authorizeRequests()
.antMatchers("/", "/login**").hasRole("user")
.anyRequest().authenticated();
}
@Bean
public RequestContextListener requestContextListener() {
return new RequestContextListener();
}
public static void main(String[] args) {
SpringApplication.run(SampleResourceApplication.class, args);
}
@RequestMapping("/home")
public String home() {
return "this is home";
}
}
我的属性看起来像:
server:
port: 900
security:
oauth2:
client:
client-id: foo
client-secret: foosecret
access-token-uri: http://localhost:9001/auth/oauth/token
user-authorization-uri: http://localhost:9001/auth/oauth/authorize
grant-type: USER
auto-approve-scopes: true
resource:
user-info-uri: http://localhost:9001/auth/user
让我们分开代理:您有用户(即您,也称为资源所有者)、授权服务器、资源服务器和客户机(访问您的URL的应用程序,即您的浏览器)。
通常情况下,这种情况发生在你的情况下:
401
。根据您的实现,您还可以直接将客户端重定向到您的AS(使用简单的重定向响应)。编辑:重定向的结果代码是什么。
当您进入configure
时,首先检查用户是否经过身份验证。如果他是,那么一切都好,但如果他不是,你必须抓住这个事件并开始你的重定向。这可以使用链接HTTP
的exceptionhandling
方法完成:
public void configure(HttpSecurity http) throws Exception {
http.antMatcher("/**")
.authorizeRequests()
.antMatchers("/", "/login**").hasRole("user")
.anyRequest().authenticated()
.and()
.exceptionHandling()
.authenticationEntryPoint(authenticationEntryPoint());
}
private AuthenticationEntryPoint authenticationEntryPoint() {
return new AuthenticationEntryPoint() {
// You can use a lambda here
@Override
public void commence(HttpServletRequest aRequest, HttpServletResponse aResponse,
AuthenticationException aAuthException) throws IOException, ServletException {
aResponse.sendRedirect(MY_AS_URL + "?redirect_uri=localhost:9001/home");
}
};
}
我使用spring-security-oauth2-authorization-server(版本0.2.0)来实现我的授权服务器。我希望用户角色在令牌中,是否可以添加它们?喜欢 谢谢
我通过spring security oauth2实现了oauth2授权服务器,并使用来存储访问令牌,然后我需要为当前访问令牌提供控制器,以便oauth2客户端获取用户信息, 如下: 但我不知道如何获取用户信息?
我正在尝试允许第三方应用程序(Google Home)访问AWS Cognito用户池中的信息。 整个流程如下(假设我理解正确): 用户试图将他们的设备(都在各种AWS服务中管理)链接到Google Home。 然后用户被重定向到我们的oauth2页面,在那里他们登录到cognito用户池中的帐户 他们成功登录并获得oauth令牌 Google Home应用程序可以使用该令牌向我们的后端发送请求,
我试图用oauth2和jwt为我的API添加安全性。所以目前我可以使用以下命令并获得访问令牌。curl客户端:secret@localhost:8080/oauth/token-d grant_type=password-d username=user-d password=password 显然,我不打算为每个用户调用它))我的问题是在哪里调用这个命令?我应该创建像“localhost:8080
我在下面设置Spring配置: 和Maven设置如下:
问题内容: 我有一个配置有注释的资源服务器,它通过参数引用授权服务器,如下所示: 授权服务器/用户端点返回其扩展名,例如带有电子邮件: 每当访问某些资源服务器端点时,Spring都会通过调用授权服务器的/user端点来验证幕后的访问令牌,并且实际上会获取丰富的用户信息(其中包含例如电子邮件信息,我已经使用Wireshark进行了验证)。 所以问题是,如何在不显式第二次调用授权服务器端点的情况下获取