티스토리 뷰

project/yegerina(개인 프로젝트)

NaverLoginApi

StartCoriny 2023. 10. 10. 22:20

NaverLoginApi.java

 

 

@Component

public class NaverLoginApi extends DefaultApi20 {

	protected NaverLoginApi(){

	}
	
	
	private static class InstanceHolder{

		private static final NaverLoginApi INSTANCE = new NaverLoginApi();

	}
	
	
	public static NaverLoginApi instance(){

		return InstanceHolder.INSTANCE;

	}
	
	
	@Override

	public String getAccessTokenEndpoint() {
	
		return "https://nid.naver.com/oauth2.0/token?grant_type=authorization_code";

	}
	
	
	@Override
	protected String getAuthorizationBaseUrl() {

		return "https://nid.naver.com/oauth2.0/authorize";

	}
}

 

 

 

 

Bill Pugh Singleton패턴

 

Initialization-on-demand holder idiom패턴

 

동작원리

1. NaverLoginApi클래스가 로딩되면 INSTANCE가 정적 초기화블록(static initialization block)내에서 생성된다.

    이 때 싱글톤 객체가 생성

2. 이후에 NaverLoginApi클래스의 instance()메서드가 호출될 때, INSTANCE에 저장된 객체가 반환 된다.

    이로 인해 항상 동일한 인스턴스를 반환하는 싱글톤이 보장

3. 이 패턴은 클래스 로딩 시점에서 초기화되며, 스레드를 안전하게 동작한다.

    다수의 스레드가 동시게 instance()메서드를 호출하더라도 한 번만 인스턴스를 생성하고 반환한다.

 

이렇게 구현된 싱글톤 패턴은 레이지 초기화(Laze Initialization)를 통해 자원을 절약, 멀티 스레딩 환경에서 안전하게 인스턴스를 생성하고 반환한다.

 

	@Override
	protected String getAuthorizationBaseUrl() {
		// getAuthorizationBaseUrl()메서드는 OAuth2.0인증 프로세스에서 사용자를 네이버 로그인 페이지로 리디렉션하기 위한 인증 기반 URL을 반환하는 메서드.
		// 이 메서드는 DefaultApi20클래스를 상속한 클래스에서 구현되는 메서드 중 하나로, 해당 API공급자(네이버)의 인증기반 URL을 정의.
		// 이 메서드는 protected로 선언되어 있기 때문에 외부에서 직접 호출할 수 없으며, 하위 클래스에서 재정의하여 사용하도록 되어 있음.
		
		return "https://nid.naver.com/oauth2.0/authorize";
			// 반환하는 URL을 사용하여 사용자를 네이버 로그인페이지로 리디렉션하여 인증 및 권한 부여를 요청할 수 있음.
	}

 

OAuth 2.0 인증 프로세스에서는 클라이언트 애플리케이션이 사용자를 공급자(네이버)의 인증 페이지로 리디렉션하고,

사용자가 로그인 및 권한 부여를 완료하면 공급자가 인증 코드를 발급한다.

이때, getAuthorizationBaseUrl()에서 반환된 URL을 사용하여 사용자를 인증 페이지로 리디렉션하게 됩니다.

'project > yegerina(개인 프로젝트)' 카테고리의 다른 글

NaverLoginBO  (0) 2023.09.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함