Spring授权和资源在同一服务器上

问题描述 投票:0回答:6

我是 Spring 环境的新手,我刚刚学习 oauth2。 有没有办法让授权服务器也成为资源服务器? 我正在查看这个新项目https://github.com/spring-projects/spring-authorization-server

一些步骤或示例将不胜感激。 我在尝试实现此操作时遇到的第一个问题是资源服务器的提供程序尚未启动。谢谢!

spring-security spring-security-oauth2
6个回答
7
投票

为了使 Spring 授权服务器成为资源服务器,我遵循了以下步骤:

  1. 让您的 Spring 授权服务器按照官方文档工作:https://docs.spring.io/spring-authorization-server/docs/current/reference/html/getting-started.html
  2. .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
    添加到您的二阶 SecurityFilterChain 中,以便代码如下所示:
  @Bean
  @Order(2)
  public SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests((authorize) ->
            authorize
                .anyRequest().authenticated()
        )
        // ADD THIS LINE HERE
        .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
        // Form login handles the redirect to the login page from the
        // authorization server filter chain
        .formLogin(Customizer.withDefaults());
    return http.build();

1
投票

OpenID Connect 1.0 UserInfo Endpoint 是在同一服务器中使用两个角色(授权服务器、资源服务器)的示例。这是因为从授权服务器获取的访问令牌直接用于验证对 UserInfo 端点的请求。顺便说一句,我很好奇你这样做的用例是什么。

查看 UserInfo 端点测试的此配置,其中演示了如何执行此操作。使这项工作有效的主要是将

JwtDecoder
公开为
@Bean
并从 Spring Boot 应用程序的配置中省略
issuer-uri
属性。


0
投票

Oauth 只是授予资源访问权限的标准化流程。在同一个服务器上实现是没有问题的。但随着应用程序横向扩展,这种方法就不太好了。


0
投票

经过很长时间的尝试,终于将两者集成在同一台服务器上,并使用Angular作为前端做了一个简单的页面。

不幸的是,我的英文不太好,所以大部分都是中文。

这是GitHub地址: https://github.com/qq253498229/spring-boot-oauth2-example


0
投票

看一下 这个演示,答案是 http://127.0.0.1:8080/books .


0
投票

@胡安·卡贝洛

这将更有帮助。如果您提供示例

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.