최신 소프트웨어의 발전과 애플리케이션의 인기로 인해 신원 인증 및 승인이 필요한 요청이 점점 더 많아지고 있습니다. OAuth 기술은 이러한 요청에 대한 솔루션을 제공합니다. Java API 개발에서 OAuth 기술을 사용하여 여러 인증 및 권한 부여 시나리오를 지원할 수 있습니다. 이 기사에서는 OAuth의 기본 원칙과 Java API 개발의 특정 애플리케이션을 소개합니다.
리소스 소유자는 리소스 서버에 액세스할 수 있는 모든 사람 또는 개체를 의미합니다. 클라이언트는 서비스에 액세스하고 리소스 서버의 리소스에 액세스할 수 있는 타사 애플리케이션을 의미합니다. 인증 서버는 인증 정보를 저장하고 액세스를 제공합니다. 토큰 서버, 리소스 서버는 실제 데이터를 저장하고 토큰을 통해 클라이언트 액세스를 인증하는 서버입니다.
OAuth 프로세스의 기본 단계는 다음과 같습니다.
1단계: 클라이언트가 리소스 소유자에게 승인을 요청합니다. 요청에는 클라이언트 식별, 필수 인증 유형, 범위 및 리디렉션 URI가 포함됩니다. 일반적인 인증 유형에는 "인증 코드" 및 "리소스 소유자 비밀번호 자격 증명"이 포함됩니다. 범위는 리디렉션 URI의 인증 범위를 나타냅니다. 소유자로부터 승인을 받은 후 리소스를 전달하는 데 사용되는 URI입니다.
2단계: 리소스 소유자가 클라이언트에 권한을 부여합니다. 이는 클라이언트에 액세스 토큰을 발행하거나 웹 브라우저에서 직접 클라이언트에 권한을 부여함으로써 이루어질 수 있습니다. 일부 요청의 경우 리소스 소유자에게 지침을 요청하고 받아야 할 수도 있습니다.
3단계: 클라이언트는 인증 액세스 토큰을 사용하여 인증 서버에 토큰을 요청합니다. 클라이언트는 자체 ID 및 인증 액세스 토큰을 매개변수로 전달합니다.
4단계: 클라이언트를 인증하고 요청을 승인하도록 서버에 권한을 부여합니다. 요청이 유효하면 인증 서버는 클라이언트에 액세스 토큰을 발급합니다.
5단계: 클라이언트는 토큰을 사용하여 리소스 서버에서 보호되는 리소스를 요청합니다. 클라이언트는 자체 ID와 토큰을 매개변수로 전달합니다.
6단계: 토큰이 유효하고 클라이언트가 보호된 리소스에 액세스할 수 있는 권한이 있으면 리소스 서버가 요청에 응답합니다.
먼저 Spring Security와 Spring OAuth2에 대한 종속성을 추가해야 합니다. 이는 다음 Maven 좌표를 사용하여 수행할 수 있습니다.
<groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.3.6.RELEASE</version>
그런 다음 인증 서버의 구성을 설정해야 합니다. 다음은 기본 구성 예입니다.
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig 확장 AuthorizationServerConfigurerAdapter {
@Autowired private DataSource dataSource; @Autowired private AuthenticationManager authenticationManager; @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.jdbc(dataSource); } @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.authenticationManager(authenticationManager).tokenStore(tokenStore()); } @Bean public TokenStore tokenStore() { return new JdbcTokenStore(dataSource); }
}
이 구성에서는 @EnableAuthorizationServer 주석을 사용하여 OAuth2 인증 서버를 활성화합니다. jdbcTemplate을 사용하여 클라이언트 세부 정보를 가져오기 위해 클라이언트 세부 정보 서비스를 설정했습니다. 또한 인증 관리자와 토큰 저장소를 설정해야 합니다.
다음으로 리소스 서버 구성을 설정해야 합니다. 다음은 기본 구성 예입니다.
@Configuration
@EnableResourceServer
public class ResourceServerConfig는 ResourceServerConfigurerAdapter {
@Override public void configure(HttpSecurity http) throws Exception { http.csrf().disable().anonymous().disable().authorizeRequests().antMatchers("/api/**").authenticated(); } @Override public void configure(ResourceServerSecurityConfigurer resources) { resources.resourceId("api"); }
}
를 확장합니다. 이 구성에서는 @EnableResourceServer 주석을 사용하여 OAuth2 리소스 서버를 활성화합니다. 리소스를 보호하기 위해 HTTP 보안을 구성하기 위해 구성 메소드를 사용합니다. ResourceId 메소드를 사용하여 리소스 서버의 ID를 정의합니다.
위 내용은 Java API 개발에서 인증을 위해 OAuth 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!