sgcWebSockets 4.4.8부터 WebSocket 클라이언트, HTTP/2 클라이언트 같은 클라이언트 컴포넌트에서 JWT가 지원돼요.
TsgcHTTP_JWT_Client 컴포넌트를 사용해 JWT 토큰을 인코딩하고 서명할 수 있어요. WebSocket 클라이언트 또는 HTTP/2 클라이언트에 연결하면 토큰이 자동으로 권한 부여 Bearer Token 헤더로 전송돼요.
설정
JWT 값은 JWTOptions 속성에서 설정할 수 있어요. 두 가지 주요 속성이 있어요: Header과 Payload. 필요한 각 속성에 값을 설정하세요.
서명이 개인 키(RS 및 ES 알고리즘)로 암호화되면 알고리즘의 PrivateKey 속성에 값을 설정하세요.
서명이 비밀(HS 알고리즘)로 암호화되면 알고리즘의 Secret 속성에 값을 설정하세요.
사용자 지정 헤더
Header와 Payload 속성에는 JWT 생성에 사용되는 가장 일반적인 헤더들이 포함되어 있어요. 하지만 AddKeyValue 메서드를 호출하고 Key와 Value를 매개변수로 전달해 더 많은 헤더를 추가할 수 있어요.
예시: JWT 헤더에 이름이 포함된 새 레코드를 추가하려면 다음 메서드를 사용하세요.
Header.AddKeyValue('name', 'John Smith');
속성을 설정한 후 JWT를 생성하려면 Sign 메서드를 호출하면 JWT 값이 반환돼요.
WebSocket 클라이언트와 JWT
TsgcWebSocketClient는 WebSocket 서버에 연결할 때 JWT를 사용할 수 있어요. 새 JWT 클라이언트를 생성하고 Authentication.Token.JWT 속성에 할당하면 돼요.
oClient := TsgcWebSocketClient.Create(nil); oClient.URL := 'ws://echo.websocket.org'; oJWT := TsgcHTTP_JWT_Client.Create(nil); oJWT.Header.alg := jwtRSA256; oJWT.Payload.sub := '1234567890'; oJWT.Payload.iat := 1516239022; oClient.Authentication.Enabled := True; oClient.Authentication.URL.Enabled := False; oClient.Authentication.Token.Enabled := True; oClient.Authentication.Token.JWT := oJWT; oClient.Active := True;
