>  기사  >  Java  >  Java API 개발에서 인증을 위해 OAuth 사용

Java API 개발에서 인증을 위해 OAuth 사용

WBOY
WBOY원래의
2023-06-18 09:59:321732검색

최신 소프트웨어의 발전과 애플리케이션의 인기로 인해 신원 인증 및 승인이 필요한 요청이 점점 더 많아지고 있습니다. OAuth 기술은 이러한 요청에 대한 솔루션을 제공합니다. Java API 개발에서 OAuth 기술을 사용하여 여러 인증 및 권한 부여 시나리오를 지원할 수 있습니다. 이 기사에서는 OAuth의 기본 원칙과 Java API 개발의 특정 애플리케이션을 소개합니다.

  1. OAuth 소개
    OAuth(Open Authorization)는 리소스 소유자와 서비스 제공자 간의 승인을 위한 개방형 표준입니다. OAuth는 방문자의 논리적 자격 증명(예: 사용자 이름 및 비밀번호)을 전달하지 않고 사용자 또는 서비스를 대신하여 다른 서비스의 데이터에 대한 액세스 권한을 부여합니다. 다양한 애플리케이션 간의 원활한 통합을 지원하는 안전하고 우아하며 유용한 솔루션입니다.
  2. OAuth 프로토콜
    OAuth 프로토콜의 핵심은 인증 프로세스입니다. OAuth 권한 부여 프로세스에는 리소스 소유자, 클라이언트, 권한 부여 서버 및 리소스 서버라는 네 가지 주요 참가자가 포함됩니다. 대부분의 OAuth 애플리케이션은 이러한 행위자에 의해 완료될 수 있습니다.

리소스 소유자는 리소스 서버에 액세스할 수 있는 모든 사람 또는 개체를 의미합니다. 클라이언트는 서비스에 액세스하고 리소스 서버의 리소스에 액세스할 수 있는 타사 애플리케이션을 의미합니다. 인증 서버는 인증 정보를 저장하고 액세스를 제공합니다. 토큰 서버, 리소스 서버는 실제 데이터를 저장하고 토큰을 통해 클라이언트 액세스를 인증하는 서버입니다.

OAuth 프로세스의 기본 단계는 다음과 같습니다.

1단계: 클라이언트가 리소스 소유자에게 승인을 요청합니다. 요청에는 클라이언트 식별, 필수 인증 유형, 범위 및 리디렉션 URI가 포함됩니다. 일반적인 인증 유형에는 "인증 코드" 및 "리소스 소유자 비밀번호 자격 증명"이 포함됩니다. 범위는 리디렉션 URI의 인증 범위를 나타냅니다. 소유자로부터 승인을 받은 후 리소스를 전달하는 데 사용되는 URI입니다.

2단계: 리소스 소유자가 클라이언트에 권한을 부여합니다. 이는 클라이언트에 액세스 토큰을 발행하거나 웹 브라우저에서 직접 클라이언트에 권한을 부여함으로써 이루어질 수 있습니다. 일부 요청의 경우 리소스 소유자에게 지침을 요청하고 받아야 할 수도 있습니다.

3단계: 클라이언트는 인증 액세스 토큰을 사용하여 인증 서버에 토큰을 요청합니다. 클라이언트는 자체 ID 및 인증 액세스 토큰을 매개변수로 전달합니다.

4단계: 클라이언트를 인증하고 요청을 승인하도록 서버에 권한을 부여합니다. 요청이 유효하면 인증 서버는 클라이언트에 액세스 토큰을 발급합니다.

5단계: 클라이언트는 토큰을 사용하여 리소스 서버에서 보호되는 리소스를 요청합니다. 클라이언트는 자체 ID와 토큰을 매개변수로 전달합니다.

6단계: 토큰이 유효하고 클라이언트가 보호된 리소스에 액세스할 수 있는 권한이 있으면 리소스 서버가 요청에 응답합니다.

  1. Java API 개발에서 OAuth 사용
    Java API 개발에는 사용자 인증 및 권한 부여를 처리하고 관리해야 하는 경우가 많습니다. OAuth 기술은 이러한 목적에 매우 유용합니다. 다음 예에서는 Spring Security와 Spring OAuth2를 사용합니다.

먼저 Spring Security와 Spring OAuth2에 대한 종속성을 추가해야 합니다. 이는 다음 Maven 좌표를 사용하여 수행할 수 있습니다.

f91694a7232a35a7fec4f6bb68aa9390

<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.3.6.RELEASE</version>

b470ebe8eba2e92148f0dcc59db521d6

그런 다음 인증 서버의 구성을 설정해야 합니다. 다음은 기본 구성 예입니다.

@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를 정의합니다.

  1. 결론
    OAuth 기술은 다양한 애플리케이션 간의 원활한 통합을 지원하는 데 사용할 수 있는 강력한 인증 프로세스입니다. Java API 개발에서는 보호된 리소스에 대한 적절한 액세스를 보장하고 사용자 보안을 보호하기 위해 인증 및 권한 부여에 OAuth를 사용할 수 있습니다. Spring Security와 Spring OAuth2를 이용하면 OAuth 기술의 기본 기능을 쉽게 구현할 수 있다.

위 내용은 Java API 개발에서 인증을 위해 OAuth 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.