이 구성 요소는 서버 측 구성 요소에서 OAuth2 프로토콜 구현을 제공합니다.
이 구성 요소는 서버 측 구성 요소에서 OAuth2 프로토콜 구현을 제공합니다.
서버 구성 요소에는 TsgcHTTP_OAuth2_Server의 인스턴스를 할당할 수 있는 Authorization.OAuth.OAuth2라는 속성이 있습니다. 따라서 Authentication이 활성화되고 OAuth2 속성이 OAuth2 Server Component에 연결되면, WebSocket 및 HTTP Request는 처리되기 위해 Bearer Token이 필요하며, 그렇지 않으면 연결이 자동으로 닫힙니다.
OAuth2 := TsgcHTTP_OAuth2_Server.Create(nil);
Server.Authentication.Enabled := True;
Server.Authentication.OAuth.OAuth2 := OAuth2;
서버는 다음 권한 부여 유형을 지원합니다:
Authorization 유형은 앱을 등록할 때 사용자 정의할 수 있으며, 기본적으로 모든 권한 부여 유형이 지원됩니다.
기본적으로, 구성 요소는 Authorization 및 Token 요청을 처리하기 위해 다음 엔드포인트로 구성됩니다
Authorization: /sgc/oauth2/auth
Token: /sgc/oauth2/token
Revocation: /sgc/oauth2/revoke
Introspection: /sgc/oauth2/introspect
Device Authorization: /sgc/oauth2/device
Device Verification: /sgc/oauth2/device/verify
따라서 서버가 포트 443에서 수신 대기하고 도메인이 www.esegece.com인 경우 EndPoints는 다음과 같습니다:
Authorization: https://www.esegece.com/sgc/oauth2/auth
Token: https://www.esegece.com/sgc/oauth2/token
Revocation: https://www.esegece.com/sgc/oauth2/revoke
Introspection: https://www.esegece.com/sgc/oauth2/introspect
Device Authorization: https://www.esegece.com/sgc/oauth2/device
Device Verification: https://www.esegece.com/sgc/oauth2/device/verify
엔드포인트는 OAuth2Options 속성에서 구성할 수 있습니다.
기본적으로 PKCE (CSRF 및 authorization code 주입 공격을 방지하기 위한 Authorization Code 흐름의 확장)가 활성화되어 있습니다.
OAuth2 프로세스를 시작하기 전에 어떤 앱을 사용할 수 있는지 등록해야 하며, 이는 OAuth2 서버 구성 요소의 Apps 속성을 사용하여 수행됩니다.
Apps.AddApp을 사용하여 OAuth2 서버에 새 Application을 추가하며, 다음 매개변수를 설정해야 합니다:
선택적으로 다음 매개변수를 설정할 수 있습니다:
기존 App을 삭제하려면 Apps.RemoveApp을 사용하십시오.
일부 token이 발급된 상태에서 서버가 다시 시작된 경우, OAuth2 서버를 시작하기 전이자 App을 등록한 후에 AddToken 메서드를 사용하여 이러한 token을 복구할 수 있습니다
이미 발행된 Token을 제거합니다.
OAuth2Options 속성을 사용하면 서버 엔드포인트와 선택적 기능을 구성할 수 있습니다.
RFC 7009에 따른 토큰 취소입니다. 활성화하면 클라이언트가 이전에 발급된 access 또는 refresh 토큰을 취소할 수 있습니다.
RFC 7662에 따른 토큰 introspection. 활성화되면 리소스 서버는 권한 부여 서버에 쿼리하여 토큰의 활성 상태와 메타데이터를 확인할 수 있습니다.
RFC 8628에 따른 Device Authorization Grant. 활성화되면 입력 제약 장치가 보조 장치에서 사용자가 권한을 부여하도록 하여 권한 부여를 요청할 수 있습니다.