스마트 스토어 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 |
---|