본문 바로가기

C#

스마트 스토어 open api 토큰 생성 C# 버전

스마트 스토어 open api c# 버전의 샘플 코드는 제공하지 않고 있다

Bcrypt 는 nuget 에서 다운로드(BCrypt.Net-Next)

 

https://apicenter.commerce.naver.com/ko/basic/main

 

네이버 커머스API센터

커머스API를 활용해서 다양한 아이디어로 새로운 기회를 잡아보세요.

apicenter.commerce.naver.com

전자서명

커머스API는 개발사의 인증 토큰 발급 요청 시 직접 클라이언트 시크릿 값을 전달하지 않고 전자서명(signature)을 생성 후 전달하는 방법으로 클라이언트 시크릿 탈취에 대해 강화된 보안을 제공합니다.

전자서명 생성 시에는 개발사에 미리 제공한 다음의 정보를 사용해야 합니다.

  • client_id: 클라이언트 ID
  • client_secret: 클라이언트 시크릿
  • timestamp: 밀리초(millisecond) 단위의 Unix 시간

전자서명 생성 방법

1. bcrypt 해싱

전자서명은 bcrypt 해싱을 사용하여 생성합니다. 생성에 사용되는 bcrypt 해싱 함수 실행에는 2개의 파라미터가 필요합니다.

BCrypt.hashpw(password, salt)
  • password: 제공된 client_id와 timestamp 값을 밑줄(_)로 연결합니다.
    • 예: client_id가 'aaaabbbb', timestamp가 '1643956077762'인 경우 aaaabbbb_1643956077762
  • salt: 제공된 client_secret을 사용합니다.

2. 인코딩

생성된 전자서명을 HTTP Query 파라미터로 전달하기 위해 Base64 인코딩을 수행합니다.

 

[샘플 코드]

public string Token
{
    get
    {
        string clientId = "{api id}";
        string clientSecret = "{password}";
        string timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds().ToString();
        string password = clientId + "_" + timestamp;

        var hashed = BCrypt.Net.BCrypt.HashPassword(password, clientSecret);

        byte[] basebyte = System.Text.Encoding.UTF8.GetBytes(hashed);
        string s64 = Convert.ToBase64String(basebyte);

        string openApiUrl = "https://api.commerce.naver.com/external/v1/oauth2/token";
        string Res = HttpPostRequest(openApiUrl, timestamp, s64);

        return Res;
    }
}

'C#' 카테고리의 다른 글

HttpClient  (0) 2022.12.22