티스토리 뷰
[fabric-rest] Hyperledger Fabric-Rest API의 JWT(Json Web Token) 사용
miiingo 2018. 5. 28. 18:15참고 사이트
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
'Blockchain > Blockchain 네트워크 구성' 카테고리의 다른 글
[Blockchain 네트워크 구성] Hyperledger Fabric v1.2에서 Private Data 저장 및 조회 (0) | 2018.07.13 |
---|---|
[blockchain-explorer] Hyperledger Explorer 설치 및 실행(Node v8.x) (0) | 2018.06.19 |
[Blockchain 네트워크 구성] Node-RED에서 Composer Card not found 오류 해결 (0) | 2018.06.15 |
[Blockchain 네트워크 구성] Node-RED에 Composer Card 추가 방법 (0) | 2018.06.15 |
[Blockchain 네트워크 구성] No valid response from any peers 오류 해결 (0) | 2018.06.14 |
- Total
- Today
- Yesterday
- 코딜리티
- 하이퍼레저 인디
- docker
- 직딩잇템
- Hyperledger Fabric v1.2
- 블록 체인
- Private Data
- javascript
- Hyperledger Fabric
- 하이퍼레저 페브릭
- 빅데이터 강의
- 빅데이터
- 어서와 데이터는 처음이지
- Hyperledger Fabric v1.1
- 빅데이터 기초
- 암브로셔스
- codility
- 알고리즘
- 코테
- 코딩테스트
- 하이퍼레저 패브릭
- 빅데이터 교육
- 기초 of 기초 데이터 개념
- DOCs
- Hyperledger Indy
- ambrosus
- 블록체인
- Blockchain
- ubuntu
- 문제풀이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |