티스토리 뷰

반응형

참고 사이트


Fabric-Rest API의 JWT

사용 방식

  • api 웹 페이지에 로그인(SIGN UP)하는 순간 토큰이 발행됨
  • SIGN UP은 입력한 Username으로 CA에 유저를 등록하고, 토큰을 발행하는 과정 수행
  • 해당 웹 페이지에 접속이 되어있는 동안에는 토큰이 유효함
  • 토큰은 브라우저의 Local Storage에 저장됨
  • 웹 페이지 종료 시 해당 토큰은 exfired됨
  • curl 명령을 통해 해당 사용자의 토큰 값을 가져올 수 있음


token 생성 및 호출

API 웹 페이지를 통한 token 생성

fabric-rest API 웹 페이지에 로그인(SIGN UP)하면, 해당 Username으로 토큰이 자동으로 생성됩니다. 이 토큰은 웹 페이지를 종료하기 전까지 계속 유효합니다.


웹 페이지를 종료하면 해당 토큰은 폐기되고 새로운 창에서 로그인할 경우 새로운 토큰이 생성됩니다.

아래의 단계에서 GET token을 수행하기 위해 웹 페이지 접속을 계속 유지합니다.


유저 등록 POST 명령을 통한 token 생성

다음 명령을 통해 'user1' 계정을 하나 생성해봅시다. orgName에는 자신의 org명을 넣어주면 됩니다.

# 'user1' 계정 생성
curl -s -X POST http://localhost:4000/users -H "content-type: application/x-www-form-urlencoded" -d 'username=user1&orgName=org1'

다음 명령의 결과로 아래와 같은 결과가 출력됩니다.

{
"success": true,
"secret": "ipiGsjeZRtNp",
"message": "user1 enrolled Successfully",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjcyNjQwMTAsInVzZXJuYW1lIjoibWlpaW5nbyIsIm9yZ05hbWUiOiJvcmcxIiwiaWF0IjoxNTI3MjI4MDEwfQ.9cVPzipi9Klj_mZvbc76FJPYi33iucBkTj65Zw2_jSM"
}


token 값 호출

유저의 토큰 값을 가져오고 싶은 경우 다음 명령을 실행하면 토큰 값이 출력됩니다. username에는 토큰 값을 가져오고 싶은 유저의 이름을 입력합니다.

단, POST 명령을 통해 등록한 유저나, 웹 페이지에 로그인한 유저를 입력해야 토큰 값을 가져올 수 있습니다. (등록되지 않은 유저인 경우, 토큰 값이 생성되지 않아 출력할 수 없고 브라우저가 종료한 경우 해당 유저의 토큰이 폐기됩니다.)

# 사전 준비사항(jq 설치)
sudo apt-get install jq

# admin 계정의 토큰 값 출력
curl 'http://localhost:4000/users' -H 'Content-Type: application/json' -d '{"username":"admin"}' | jq -r .token

# user1 계정의 토큰 값 출력
curl 'http://localhost:4000/users' -H 'Content-Type: application/json' -d '{"username":"user1"}' | jq -r .token


Postman을 통한 REST API 호출을 위해 출력된 토큰 값을 저장해둡니다.



Postman에서 REST API 호출

Postman 설정

Postman에 접속해 Headers 부분에 토큰 값을 넣어줍니다.

  • Key : Authorization
  • Value : Bearer <복사해 둔 토큰 값>


[GET] 채널 리스트

채널 리스트를 가져오기 위해 다음 GET 요청을 수행합니다.

http://<서버 IP 주소>:<REST API의 포트 번호>/channels?peer=<채널 리스트를 가져올 대상 피어>

http://localhost:4000/channels?peer=peer0

GET 요청 결과, 해당 피어에 조인된 채널의 리스트가 출력됩니다.


[GET] 설치된 체인코드 리스트

해당 채널에 설치된 체인코드 리스트를 가져오기 위해 다음 GET 요청을 수행합니다.

http://<서버 IP 주소>:<REST API의 포트 번호>/chaincodes?peer=<설치된 체인코드 리스트를 가져올 대상 피어>&type=installed&channel=<채널명>

http://localhost:4000/chaincodes?peer=peer0&type=installed&channel=kisachannel


[GET] 인스턴스화된 체인코드 리스트

해당 채널에 인스턴스화된 체인코드 리스트를 가져오기 위해 다음 GET 요청을 수행합니다.

http://<서버 IP 주소>:<REST API의 포트 번호>/chaincodes?peer=<인스턴스화된 체인코드 리스트를 가져올 대상 피어>&type=instantiated&channel=<채널명>

http://localhost:4000/chaincodes?peer=peer0&type=instantiated&channel=kisachannel


[GET] 채널 정보

채널 정보를 가져오기 위해 다음 GET 요청을 수행합니다. 다음 명령의 결과로 현재 블록의 Hash 값과 이전 블록의 Hash 값이 출력됩니다.

http://<서버 IP 주소>:<REST API의 포트 번호>/<채널명>?peer=<채널 정보를 가져올 대상 피어>

http://localhost:4000/channels/kisachannel?peer=peer0




반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함