콘텐츠로 이동
무료 평가 시작

pdcomm_opcua_client_activate_user_name

함수

UserNameIdentityToken으로 세션을 활성화합니다(ActivateSession).

int32_t pdcomm_opcua_client_activate_user_name(pdcomm_opcua_handle client, const uint8_t *name, size_t name_size, const uint8_t *secret, size_t secret_size)

선언 위치: #include <pdcomm/opcua/pdcomm_opcua.h>

보안 채널은 SecurityPolicy None을 사용하면 안 됩니다. 엔드포인트의 사용자 토큰 정책이 보안 SecurityPolicy를 사용하면 비밀 값을 서버 인증서용으로 암호화합니다. 64바이트까지는 기존(legacy) 암호화 토큰 형식을, 더 긴 비밀 값은 RSA EncryptedSecret을 사용합니다(#PDCOMM_OPCUA_USER_SECRET_HEADER_POLICY_ONLY 참고). 토큰 정책이 SecurityPolicy None을 사용하면 비밀 값은 토큰 안에 암호화되지 않은 채로 전송되며, 클라이언트는 이를 SignAndEncrypt 채널에서만 허용합니다.

매개변수

이름설명
client클라이언트 핸들입니다.
nameUTF-8 사용자 이름이며 1~1024바이트입니다.
name_sizename의 크기(바이트)입니다.
secretUTF-8 비밀번호이며 최대 16 KiB입니다. 호출 중에만 빌려 씁니다.
secret_sizesecret의 크기(바이트)입니다.

반환값

성공하면 #PDCOMM_OPCUA_OK를 반환합니다. 이름이 비어 있거나 유효하지 않거나 비밀 값이 16 KiB를 넘으면 #PDCOMM_OPCUA_INVALID_INPUT을 반환합니다. 이름이 1024바이트를 넘거나, 비밀 값이 UTF-8이 아니거나, None 채널이거나, 엔드포인트에 사용자 이름 토큰 정책이 없거나, 사용자가 거부되었거나, 네트워크가 실패하면 #PDCOMM_OPCUA_RUNTIME_ERROR를 반환합니다. 그 밖에 #PDCOMM_OPCUA_BUSY, #PDCOMM_OPCUA_CLOSED, #PDCOMM_OPCUA_INVALID_HANDLE, #PDCOMM_OPCUA_POISONED를 반환할 수 있습니다.

참고

  • 최대 timeout_ms 동안 블로킹됩니다. 라이브러리는 자신이 가진 비밀 값 사본을 지웁니다. secret은 호출자가 소유하며 호출자가 지워야 합니다.