Skip to content

[๐Ÿ†2024 ๊ณต๊ฐœSW ๊ฐœ๋ฐœ์ž๋Œ€ํšŒ ๋ผ์˜จ์‹œํ์–ด ๋Œ€ํ‘œ์ƒ๐Ÿ†] Web3 ์ „์ž์ง€๊ฐ‘ ์‹œ์Šคํ…œ : "Web 3.0 ์‹ ์›/์ž๊ฒฉ์ฆ๋ช… ๊ด€๋ฆฌ ์‹œ์Šคํ…œ"

License

Notifications You must be signed in to change notification settings

pjhcsols/Web3.0-Credential_Management_System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ” [BASILIUM |๊ฒฝ๋ถ๋ฉ‹์Ÿ์ด] Web 3.0 ์‹ ์›/์ž๊ฒฉ์ฆ๋ช… ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

theme

์ฃผ์ œ

๊ฐœ์ธ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์†Œ์œ ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” Web3 ์ „์ž์ง€๊ฐ‘ ์‹œ์Šคํ…œ : "Web 3.0 ์‹ ์›/์ž๊ฒฉ์ฆ๋ช… ๊ด€๋ฆฌ ์‹œ์Šคํ…œ"

์ด ํ”„๋กœ์ ํŠธ๋Š” Web 3.0 ์‹œ๋Œ€์˜ ์ƒˆ๋กœ์šด ์‹ ์› ๋ฐ ์ž๊ฒฉ์ฆ๋ช… ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜์—ฌ ๊ฐœ์ธ์˜ ์ž์œจ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์„ ํ˜์‹ ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ฐจ์„ธ๋Œ€ ์ง€๊ฐ‘์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”— Youtube ์‹œ์—ฐ์˜์ƒ

[https://www.youtube.com/Web3.0-Credential_Management_System_๋Œ€ํšŒ์ถœํ’ˆ์šฉ]
[https://www.youtube.com/Web3.0-Credential_Management_System]



์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

arch
  • Web3 ๊ตฌ์กฐ์™€ ์™ธ๋ถ€ ์ธ์ฆ API๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€๊ฐ‘ ์ƒ์„ฑ ๋ฐ ์ธ์ฆ์„œ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•˜๊ณ , ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ ๋ฐ ์‹ ์› ํ™•์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ „์ฒด ๊ตฌ์กฐ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋ถ€ํ„ฐ ๋ธ”๋ก์ฒด์ธ ๋ฐ ์„œ๋ฒ„ ์ธก๊นŒ์ง€ ๊ฐ ๋‹จ๊ณ„๋ณ„๋กœ ์ฒด๊ณ„์ ์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


ํŒ€์›

๋ฐ•ํ•œ์†”(ํŒ€์žฅ) ๊น€๊ฑด์•„ ๊น€์„ธ์•„ ์œค์ง„๋…ธ
Backend Backend iOS, Design Backend
Team Leader

[Infra Cloud Engineer]
DevOps Pipeline

[Server Developer]
BlockChain ๋ฐ ์ธ์ฆ์„œ ๋ฐ์ดํ„ฐ ๋ฐ PDF ๊ด€๋ฆฌ
์ธ์ฆ์„œ ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™” ๊ด€๋ฆฌ
์™ธ๋ถ€ API ์ธ์ฆ ์„œ๋น„์Šค ๊ตฌ์ถ•
์™ธ๋ถ€API ํ…Œ์ŠคํŠธ iOS ๊ฐœ๋ฐœ ์ธ์ฆ์„œ PDF ๊ด€๋ฆฌ




ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

image image



์ฃผ์š” ํ™”๋ฉด

์˜จ๋ณด๋”ฉ ํ™”๋ฉด ๋ฐ ๋กœ๊ทธ์ธ ํ™”๋ฉด

  • ์นด์นด์˜ค ๋กœ๊ทธ์ธ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ์ธ์ด ์™„๋ฃŒ๋˜๋ฉด 4์ž๋ฆฌ PIN ์ฝ”๋“œ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ƒ์ฒด ์ธ์ฆ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
onboarding

๋ฉ”์ธ ํ™”๋ฉด

  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ ์‹ ์› ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.
  • ๋ฉ”์ธ ํ™”๋ฉด์˜ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ์œ„์น˜ํ•œ 'ํ†ฑ๋‹ˆ๋ฐ”ํ€ด' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด, ์„ค์ • ํ™”๋ฉด์œผ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.
  • ์„ค์ • ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐœ๊ธ‰ํ•œ ์ธ์ฆ์„œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ์ธ์ฆ์„œ ์ „์ฒด ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
main

์ „์ž ์ฆ๋ช…์„œ ๋ฐœ๊ธ‰ ํ™”๋ฉด

  • ๋ฉ”์ธ ํ™”๋ฉด์˜ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ์œ„์น˜ํ•œ โ€˜+โ€™ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด, ์ฆ๋ช…์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๋Š” ๋ฐœ๊ธ‰์„ ์›ํ•˜๋Š” ์ฆ๋ช…์„œ๋ฅผ ์„ ํƒํ•œ ํ›„, ๋™์˜ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ์ธ์ฆ์„ ๊ฑฐ์น˜๋ฉด ์ง€๊ฐ‘์— PDF ํ˜•ํƒœ๋กœ ์ธ์ฆ์„œ๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.
add

์ธ์ฆ์„œ ๋ณด๊ธฐ ํ™”๋ฉด

  • ๋ฉ”์ธํ™”๋ฉด์˜ ์นด๋“œ๋ฅผ ํด๋ฆญ ์‹œ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐœ๊ธ‰ํ•œ ์ธ์ฆ์„œ ๋ชฉ๋ก์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ๋ชฉ๋ก์„ ํด๋ฆญ ์‹œ, ํ•ด๋‹นํ•˜๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ๋ชฉ๋ก์„ ์˜†์œผ๋กœ ์Šฌ๋ผ์ด๋“œ ์‹œ, ํ•ด๋‹นํ•˜๋Š” ์ธ์ฆ์„œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
add

์ฃผ์š” ๊ธฐ๋Šฅ

OAuth 2.0 ์†Œ์…œ ๋กœ๊ทธ์ธ

security
  • ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” OAuth 2.0 ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์นด์นด์˜ค API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ์นด์นด์˜ค ์—‘์„ธ์Šค ํ† ํฐ์„ ๋ฐœ๊ธ‰ ๋ฐ›์•„ ์‚ฌ์šฉ์ž์˜ ์†Œ์…œ ๊ณ„์ • ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ€์ ธ์˜ค๊ณ ,
    ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์— ์†์‰ฝ๊ฒŒ ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ์นด์นด์˜ค ๊ณ„์ • ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ ๊ณ„์ • ์ƒ์„ฑ ๊ณผ์ • ์—†์ด ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ OAuth 2.0์˜ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ •๋ณด๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌ๋˜๋ฉฐ, ์„œ๋ฒ„ ์ธก์—์„œ๋Š” ์นด์นด์˜ค๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ์•ก์„ธ์Šค ํ† ํฐ์„ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ํ”„๋กœํ•„ ์ •๋ณด ๋ฐ ๊ธฐ๋ณธ์ ์ธ ๊ณ„์ • ์ •๋ณด๋ฅผ ํš๋“ํ•ฉ๋‹ˆ๋‹ค.

์ดํ›„ ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ํšŒ์›๊ฐ€์ž… ์ ˆ์ฐจ๋ฅผ ์ž๋™ํ™”ํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด ํšŒ์›์ด๋ผ๋ฉด ๋ฐ”๋กœ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ํŽธ์˜์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ด ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž ๋™์˜ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์ณ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ์„ ์ˆ˜์ง‘ํ•˜๋ฉฐ, ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ์™€ ๊ด€๋ จ๋œ ๋ฒ•์  ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฒ ์ €ํžˆ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.


2์ฐจ ์ธ์ฆ: ์ƒ์ฒด ์ธ์ฆ ๋“ฑ ์ „์ž ์ง€๊ฐ‘ ์ƒ์„ฑ์„ ์œ„ํ•œ 2์ฐจ ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ํฌํ•จ

  • LocalAuthentication Framework๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€๋ฌธ, ์–ผ๊ตด ์ธ์‹๊ณผ ๊ฐ™์€ ์ƒ์ฒด ์ •๋ณด๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋””๋ฐ”์ด์Šค ์ƒ์˜ ๋ฌธ์ œ๋กœ ์ธํ•˜์—ฌ ์ƒ์ฒด์ธ์ฆ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด PIN ์ฝ”๋“œ๋กœ 2์ฐจ ์ธ์ฆ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์•ˆ๋„ ๋งˆ๋ จํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.
security

๊ธฐ๋ณธ์ ์ธ ๋กœ๊ทธ์ธ ์ ˆ์ฐจ ์™ธ์—๋„ ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด 2์ฐจ ์ธ์ฆ ๊ธฐ๋Šฅ์„ ํฌํ•จ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. 2์ฐจ ์ธ์ฆ ์ ˆ์ฐจ๋Š” ์ „์ž ์ง€๊ฐ‘ ์ƒ์„ฑ์„ ์œ„ํ•œ ํ•„์ˆ˜ ๋‹จ๊ณ„๋กœ, ์‚ฌ์šฉ์ž์˜ ์‹ ์›์„ ํ•œ์ธต ๋” ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ์ƒ์ฒด ์ธ์ฆ์„ ํ™œ์šฉํ•œ 2์ฐจ ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๋ณด๋‹ค ์•ˆ์ „ํ•˜๋ฉด์„œ๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” 2์ฐจ ์ธ์ฆ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ํ›„์—๋งŒ Web3 ๊ธฐ๋ฐ˜์˜ ์ „์ž ์ง€๊ฐ‘์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ์ง€๊ฐ‘์€ ๋ธ”๋ก์ฒด์ธ ์ƒ์—์„œ์˜ ๋‹ค์–‘ํ•œ ๊ฑฐ๋ž˜์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ์ž์˜ ์ž์‚ฐ๊ณผ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ๋”์šฑ ์ฒ ์ €ํžˆ ๋ณดํ˜ธํ•˜๋ฉฐ, ๋†’์€ ์ˆ˜์ค€์˜ ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œํ‚ต๋‹ˆ๋‹ค.

2์ฐจ ์ธ์ฆ ์ ˆ์ฐจ๋Š” ์‚ฌ์šฉ์ž์˜ ํŽธ์˜์„ฑ์„ ํ•ด์น˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ, ํŠนํžˆ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ ํ•„์ˆ˜์ ์ธ ์ถ”๊ฐ€ ๋ณด์•ˆ ๊ณ„์ธต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.



๋ธ”๋ก์ฒด์ธ & PDF ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ธ์ฆ์„œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (Certificate Management System)

์ด ํ”„๋กœ์ ํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ์•”ํ˜ธํ™” ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ์„œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ, OAuth2.0 ๋ฐ Web3 ํ™˜๊ฒฝ์„ ํ†ตํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€๊ฐ‘๊ณผ ์ธ์ฆ์„œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ๋งŒ์˜ ์ง€๊ฐ‘์—์„œ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๋ฐ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ธ”๋ก์ฒด์ธ๊ณผ PDF ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ์˜ ์ง„๋ณธ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ ์„ค๋ช…

features13 features14 features14_2 features15 features16 features17 features18 features19 features20 features21 features22 features23 features24 features25 features26 features27 features28 features29 features30 features32



๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ

User ํ…Œ์ด๋ธ” ๊ตฌ์กฐ (SQL)

CREATE TABLE users (
                       id BIGINT AUTO_INCREMENT PRIMARY KEY,
                       email VARCHAR(255) NOT NULL UNIQUE,
                       password VARCHAR(255) NOT NULL
);

Wallet ํ…Œ์ด๋ธ” ๊ตฌ์กฐ (SQL)

CREATE TABLE wallets (
                         id BIGINT AUTO_INCREMENT PRIMARY KEY,
                         user_id BIGINT NOT NULL,
                         private_key TEXT NOT NULL,  -- TEXT๋กœ ๋ณ€๊ฒฝ
                         public_key TEXT NOT NULL,  -- TEXT๋กœ ๋ณ€๊ฒฝ
                         sign_cert_path VARCHAR(255),
                         sign_pri_key_path VARCHAR(255),
                         FOREIGN KEY (user_id) REFERENCES users(id)
);

CREATE TABLE wallet_pdf_urls (
                                 wallet_id BIGINT,
                                 certificate_type VARCHAR(255),
                                 pdf_url VARCHAR(255),
                                 PRIMARY KEY (wallet_id, certificate_type),
                                 FOREIGN KEY (wallet_id) REFERENCES wallets(id)
);

CREATE TABLE wallet_pdf_hash (
                                 wallet_id BIGINT,
                                 certificate_type VARCHAR(255),
                                 pdf_hash VARCHAR(255),
                                 PRIMARY KEY (wallet_id, certificate_type),
                                 FOREIGN KEY (wallet_id) REFERENCES wallets(id)
);
  • user_id: ์‚ฌ์šฉ์ž์™€ ์ง€๊ฐ‘์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ฐธ์กฐ ํ‚ค.
  • private_key: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋””์ฝ”๋”ฉ์šฉ ๊ฐœ์ธ ํ‚ค, RSA ๋””์ฝ”๋”ฉ ์‹œ ์‚ฌ์šฉ.
  • public_key: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”์šฉ ๊ณต๊ฐœ ํ‚ค, RSA ์•”ํ˜ธํ™” ์‹œ ์‚ฌ์šฉ.
  • sign_cert_path: ๊ณต์ธ์ธ์ฆ์„œ certFile ๊ฒฝ๋กœ.
  • sign_pri_key_path: ๊ณต์ธ์ธ์ฆ์„œ certPriKey ๊ฒฝ๋กœ.
  • wallet_pdf_urls: PDF ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋งŒ ์ €์žฅํ•˜์—ฌ ์„œ๋ฒ„์— ์ง์ ‘์ ์ธ ์ธ์ฆ์„œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Œ.
  • pdfHash: PDF ํŒŒ์ผ์˜ ํ•ด์‹œ๊ฐ’์„ ์ €์žฅํ•˜์—ฌ ์ธ์ฆ์„œ ์ง„๋ณธ์„ฑ ํ™•์ธ.

์ด ์ธ์ฆ์„œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ Web2์™€ Web3์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ง€๊ฐ‘๊ณผ ์ธ์ฆ์„œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ ์‹œ์— ์ง์ ‘ ์ธ์ฆ์„œ ์ง„์œ„๋ฅผ ํ™•์ธํ•˜๊ณ  ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์‹ ๋ขฐ์„ฑ ๋†’์€ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.




์ง€๊ฐ‘ ํ”„๋กœ๊ทธ๋žจ ๋ฉ”์ปค๋‹ˆ์ฆ˜

์ง€๊ฐ‘ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ํŠน์ • ์ง€๊ฐ‘ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด ์ฝ”์ธ์„ ์ „์†กํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค

  1. ์ง€๊ฐ‘ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐœ์ธํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ํŠธ๋žœ์žญ์…˜ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์„œ๋ช…์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ์ƒ์„ฑ๋œ ์„œ๋ช…์€ ๊ณต๊ฐœํ‚ค์™€ ํ•จ๊ป˜ ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์— ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์ง€๊ฐ‘ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ด์Šˆ๋Š” ๊ฐœ์ธํ‚ค์™€ ์ธ์ฆ์„œ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.



Web3 ์‹ ์›/์ž๊ฒฉ์ฆ๋ช… ์‹œ์Šคํ…œ๋งŒ์˜ ์ฐจ๋ณ„์„ฑ

์ง€๊ฐ‘์˜ RSA ๊ณต๊ฐœํ‚คยท๊ฐœ์ธํ‚ค๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ ์ •๋ณด๋ฅผ ๋ธ”๋ก๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๋ณด๊ด€ํ•˜๋Š” ๋ฐฉ์‹

  • ๋ธ”๋ก์˜ ๊ฐœ์ธํ‚ค ์œ„์น˜์™€ ์ธ์ฆ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€๊ฐ‘์˜ RSA ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋ธ”๋ก๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ์ฆ์„œ ๋ฐ์ดํ„ฐ๋Š” ๋ธ”๋ก ๋ฐ PDF ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— Key(์ธ์ฆ์„œ_walletID)์™€ ์ธ์ฆ์‹œ๊ฐ„ ์™ธ์—๋Š” ์•”ํ˜ธํ™”๋œ ํ˜•ํƒœ๋กœ ๋ณด๊ด€๋ฉ๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ์ง€๊ฐ‘ ๊ฐœ์ธํ‚ค๊ฐ€ ์—†๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ ๋ณตํ˜ธํ™” ๋ฐ ์ธ์ฆ์„œ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆํ•œ ์‹œ๊ฐ„ ํ™•์ธ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ, ๋ณด์•ˆ์„ฑ๊ณผ ๋ธ”๋ก์ฒด์ธ์˜ ์žฅ์ ์„ ๋™์‹œ์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”๋œ ๊ฐœ์ธ์ •๋ณดยท์ธ์ฆ์„œ ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐยท๋ธ”๋ก์œผ๋กœ ๊ด€๋ฆฌ๋˜๋ฉฐ S3 ์Šคํ† ๋ฆฌ์ง€์—๋Š” ์›๋ณธ PDF ์ธ์ฆ์„œ๋ฅผ ์ €์žฅํ•˜๋ฉฐ PDF ํ•ด์‹œ๊ฐ’์„ ํ†ตํ•ด ์ง„๋ณธ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ์ด๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜์—ฌ ๊ธฐ์กด ์ „์ž์ง€๊ฐ‘ ์‹œ์Šคํ…œ๋ณด๋‹ค ๋†’์€ ๋ฐ์ดํ„ฐ ์ž์œจ์„ฑ์„ ๋ณด์žฅ๋ฐ›์Šต๋‹ˆ๋‹ค.



๋ธ”๋ก์ฒด์ธ์˜ ๋ธ”๋ก๊ณผ S3 ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•œ ์ธ์ฆ ์ˆ˜ํ–‰์„ ์œ„ํ•œ Verifiable Credential ๊ด€๋ฆฌ

image

  1. S3 ์Šคํ† ๋ฆฌ์ง€์— ์‹ค๋ฌผ ์ธ์ฆ์„œ์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์™ธ๋ถ€ ์ธ์ฆ Verifiable Credential์„ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์žฌ๋‹ค์šด๋กœ๋“œํ•˜๋ฉด ํ•ด๋‹น S3 ์Šคํ† ๋ฆฌ์ง€์˜ ์ธ์ฆ์„œ์™€ Verifiable Credential์„ ํ†ตํ•ด ๋ธ”๋ก์„ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉ์ž์˜ ๋””๋ฐ”์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

image
image

  1. Web3 ๋ธ”๋ก์ฒด์ธ์˜ ๋ธ”๋ก(PDF)์— ์™ธ๋ถ€ ์ธ์ฆ ๊ฐ’ ๋ฐ ์ •๋ณด ์ €์žฅ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ๋””๋ฐ”์ด์Šค์˜ ๋ธ”๋ก์— ์™ธ๋ถ€ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜๋Š” Verifiable Credential, Credential Metadata, Claims, Proofs๋ฅผ ํฌํ•จํ•œ ๋ธ”๋ก์„ ์ƒ์„ฑ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  2. ์™ธ๋ถ€ ์ธ์ฆ API๋ฅผ ํ™œ์šฉํ•ด ์ „์ž์ง€๊ฐ‘์˜ ์ธ์ฆ์„œ ์‚ฌ์šฉ ์‹œ, ์™ธ๋ถ€ ์ธ์ฆ๊ณผ์˜ ์—ฐ๋™์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.


์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๊ณผ์ •


์ธ์ฆ์„œ ๋“ฑ๋ก

image

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ์„œ ๋“ฑ๋ก์„ ์œ„ํ•ด 2์ฐจ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. Web3 ํ™˜๊ฒฝ์˜ PDF๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ์— ๋Œ€ํ•œ Verifiable Credential ์ƒ์„ฑ ๋ฐ ์‹ ๋ถ„์ฆ๋ช… ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์™ธ๋ถ€ ์ธ์ฆ API๋ฅผ ํ™œ์šฉํ•ด ์ธ์ฆ์„œ Verifiable Credential์— ๋Œ€ํ•œ ์‹ ๋ถ„ ์ฆ๋ช…์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  4. ์„œ๋ฒ„๋Š” ๋“ฑ๋ก๋œ ์ธ์ฆ์„œ์˜ ๋ธ”๋ก(PDF) URL์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ์ ‘๊ทผ

image

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ๋“ฑ๋ก๋œ ์ธ์ฆ์„œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด 2์ฐจ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. Web3 ํ™˜๊ฒฝ์˜ PDF๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ์— ๋Œ€ํ•œ ์ธ์ฆ์„ ์š”์ฒญํ•˜๊ณ  ์ฆ๋ช…์„œ URL์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์™ธ๋ถ€ ์ธ์ฆ API๋ฅผ ํ™œ์šฉํ•ด ์ธ์ฆ์„œ Verifiable Credential์— ๋Œ€ํ•œ ์‹ ๋ถ„ ์ฆ๋ช…์„ ์š”์ฒญํ•˜๊ณ  ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ์„œ๋ฒ„๋Š” ์ธ์ฆ์ด ์™„๋ฃŒ๋œ ์ธ์ฆ์„œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ๋ชฉ๋ก ๋ณด๊ธฐ

image

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ๋“ฑ๋ก๋œ ์ธ์ฆ์„œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด 2์ฐจ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. Web3 ํ™˜๊ฒฝ์˜ PDF๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ์—์„œ Verifiable Credential์„ ์ฐพ์•„์˜ค๊ณ , ์ธ์ฆ์„œ URL์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์„œ๋ฒ„๋กœ ์ธ์ฆ์„œ URL์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  4. URL์„ ํ†ตํ•ด S3 ์Šคํ† ๋ฆฌ์ง€์— ์žˆ๋Š” ์ธ์ฆ์„œ์— ์ ‘๊ทผํ•ด ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ€๊ณต ํ›„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ชฉ๋ก ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.




Web3 ์ง€๊ฐ‘ ์ƒ์„ฑ ๊ณผ์ •

  • ์ง€๊ฐ‘์ด ์ƒ์„ฑ๋  ๋•Œ ๋ธ”๋ก๊ณผ S3 ์Šคํ† ๋ฆฌ์ง€์˜ PDF๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ ๋ธ”๋ก๊ณผ PDF์˜ URL์ด ์‚ฌ์šฉ์ž ์ง€๊ฐ‘์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • S3 ์Šคํ† ๋ฆฌ์ง€์— ์‹ค๋ฌผ ์ธ์ฆ์„œ์™€ ๋ธ”๋ก์— ์‹ ์›์ธ์ฆ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฐœ์ธ์˜ ๋””๋ฐ”์ด์Šค์—์„œ ์ฆ๋ช…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

image

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์—‘์„ธ์Šค ํ† ํฐ์„ ํ†ตํ•ด Web3 ์ง€๊ฐ‘ ์ƒ์„ฑ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  2. ์ง€๊ฐ‘์—์„œ ์ธ์ฆ์„œ PDF์™€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ Verifiable Credential (Credential Metadata, Claims, Proofs)๋ฅผ S3 ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜๊ณ  ๊ฐœ์ธ ๋””๋ฐ”์ด์Šค์— ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ S3 PDF ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  3. ์ง€๊ฐ‘์—์„œ ๊ฐœ์ธ ๋””๋ฐ”์ด์Šค์˜ ๋ธ”๋ก(PDF)์ด ์ƒ์„ฑ๋˜๋ฉฐ ๋ธ”๋ก(PDF)์—๋Š” ์ถ”ํ›„ ์—…๋กœ๋“œํ•˜๋Š” ํ•ด๋‹น ์ฆ๋ช…์— ๊ด€ํ•œ key : value ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๋ธ”๋ก(PDF)์ด ์ƒ์„ฑ ๋ฐ ์ถ”๊ฐ€๋˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ์ธ์ฆ๊ณผ์˜ ์—ฐ๋™์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  4. ์ง€๊ฐ‘์—์„œ ํ•ด๋‹น๋˜๋Š” ์ธ์ฆ์„œ๋ฅผ ์—…๋กœ๋“œ ๊ฐ€๋Šฅํ•˜๋ฉฐ PDF ๋ณ„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ ์ธ์ฆ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” key : value ๊ฐ’์œผ๋กœ Verifiable Credential๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.




์™ธ๋ถ€ API๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ (๋Œ€ํ•™ ์žฌํ•™ ์ธ์ฆ, ์ž๊ฒฉ์ฆ, ์ฃผ๋ฏผ๋“ฑ๋ก์ฆ, ์—ฌ๊ถŒ, ์šด์ „๋ฉดํ—ˆ)

์‚ฌ์šฉ์ž ๋ฐ ์ธ์ฆ์„œ์˜ ์‹ ๋ขฐ์„ฑ์„ ์œ„ํ•ด ์™ธ๋ถ€ API๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๋Œ€ํ•™ ์žฌํ•™์„ ์ธ์ฆํ•˜๊ณ ,
Qnet ์ž๊ฒฉ์ฆ ํ™•์ธ์„œ ๋ฐ ์ฃผ๋ฏผ๋“ฑ๋ก ์ง„์œ„ ์—ฌ๋ถ€ ์ธ์ฆ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.



1. ์žฌํ•™ ์ธ์ฆ ํ…Œ์ŠคํŠธ

์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋Œ€ํ•™์— ์žฌํ•™ ์ค‘์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€ API๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ํ•™์  ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. API ์š”์ฒญ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์žฌํ•™ ์ƒํƒœ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ , ์ธ์ฆ๊ธฐ๊ด€ ์„œ๋ฒ„๋Š” ์ด ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์ •๋ณด์˜ ์ง„์œ„๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๊ณต์ ์ธ ์žฌํ•™ ์ธ์ฆ ์š”์ฒญ์— ๋Œ€ํ•ด, ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์ •๋ณด์™€ ์™ธ๋ถ€ API์˜ ์‘๋‹ต์ด ์ผ์น˜ํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ , ์žฌํ•™ ์ƒํƒœ๊ฐ€ ๊ฒ€์ฆ๋œ ์‚ฌ์šฉ์ž๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

API ๊ฐœ์š”

  • API ์ œ๊ณต์ฒ˜: UnivCert https://univcert.com/
  • ์š”์ฒญ ํ—ค๋”:
    • Content-Type: application/json
  • ํ•„์š” ๋ฐ์ดํ„ฐ: APIํ‚ค, ์‚ฌ์šฉ์ž ์ด๋ฆ„, ๋Œ€ํ•™๊ต ์ด๋ฉ”์ผ, ๋Œ€ํ•™๊ต๋ช…, ์ธ์ฆ๋ฒˆํ˜ธ

ํ…Œ์ŠคํŠธ ์ ˆ์ฐจ

  1. ์ด์šฉ์ž ๋ฉ”์ผ ์ธ์ฆ ์‹œ์ž‘ (์ธ์ฆ์ฝ”๋“œ ๋ฐœ์†ก)

Request ์˜ˆ์‹œ

{
  โ€œkeyโ€ : โ€œ{๋ถ€์—ฌ๋ฐ›์€ API KEY}โ€,
  "emailโ€ : โ€œ{๋Œ€ํ•™๊ต ์ด๋ฉ”์ผ}โ€,
  โ€œunivNameโ€ : โ€œ{๋Œ€ํ•™๊ต๋ช…}โ€,
  โ€œuniv_checkโ€ : true
}

("univ_check"๊ฐ€ true๋ผ๋ฉด ํ•ด๋‹น ๋Œ€ํ•™ ์žฌํ•™ ์—ฌ๋ถ€, false๋ผ๋ฉด ๋ฉ”์ผ ์†Œ์œ ์ž ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•ด ์ค๋‹ˆ๋‹ค.)

Response ์˜ˆ์‹œ

//๋ฉ”์ผ๋กœ ์ธ์ฆ๋ฒˆํ˜ธ ์ „์†ก์ด ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ
{
  โ€œsuccessโ€ : true
}
//์‹คํŒจํ•œ ๊ฒฝ์šฐ
{
  "status" : 400,
  "success" : false,
  "message" : "{์—๋Ÿฌ ๋ฉ”์‹œ์ง€}"
}
  1. ์ด์šฉ์ž ๋ฉ”์ผ์— ๋ฐœ์†ก๋œ ์ธ์ฆ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์š”์ฒญํ•˜๊ธฐ

Request ์˜ˆ์‹œ

{
  โ€œkeyโ€ : โ€œ{๋ถ€์—ฌ๋ฐ›์€ API KEY}โ€
  โ€œunivNameโ€ : โ€œ{๋Œ€ํ•™๊ต๋ช…}โ€,
  โ€œemailโ€ : "{๋Œ€ํ•™๊ต ์ด๋ฉ”์ผ}โ€,
  โ€œcodeโ€ : {๋Œ€ํ•™ ์ด๋ฉ”์ผ๋กœ ๋ฐ›์€ ์ธ์ฆ์ฝ”๋“œ}
}

Response ์˜ˆ์‹œ

//์ •ํ™•ํ•œ ์ธ์ฆ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ
{
โ€ƒโ€ƒโ€œsuccessโ€ : true
โ€ƒโ€ƒโ€œunivNameโ€ : โ€œOO๋Œ€ํ•™๊ตโ€,
โ€ƒโ€ƒโ€œcertified_emailโ€ : โ€œ[email protected]โ€,
โ€ƒโ€ƒโ€œcertified_dateโ€ : โ€œ2023-01-03T09:30:22โ€
}
//์‹คํŒจํ•œ ๊ฒฝ์šฐ
{
โ€ƒโ€ƒโ€œstatusโ€ : 400,
โ€ƒโ€ƒ"success" : false,
โ€ƒโ€ƒ"message" : "{์—๋Ÿฌ ๋ฉ”์‹œ์ง€}"
}
  1. ์ธ์ฆ๋œ ์ด๋ฉ”์ผ์ธ์ง€ ํ™•์ธ

Request ์˜ˆ์‹œ

{
  โ€œkeyโ€ : โ€œ{๋ถ€์—ฌ๋ฐ›์€ API KEY}โ€,
  "emailโ€ : โ€œ{์ธ์ฆํ•˜๊ณ ์ž ํ•˜๋Š” ์ด๋ฉ”์ผ}โ€
}

Response ์˜ˆ์‹œ

//์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ
{
  โ€œsuccessโ€ : true,
  โ€œcertified_dateโ€ : โ€œ2023-01-03T09:30:22(์ธ์ฆ๋ฐ›์€ ์‹œ๊ฐ„)โ€
}
//์‹คํŒจํ•œ ๊ฒฝ์šฐ
{
  โ€œsuccessโ€ : false,
  โ€œmessageโ€ : "{์—๋Ÿฌ ๋ฉ”์‹œ์ง€}"
}


2. Qnet ์ž๊ฒฉ์ฆ ํ™•์ธ์„œ ์ง„์œ„ํ™•์ธ ํ…Œ์ŠคํŠธ

Codef API๋ฅผ ํ†ตํ•ด ์ž๊ฒฉ์ฆ ํ™•์ธ์„œ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ํ…Œ์ŠคํŠธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

API ๊ฐœ์š”

  • API ์ œ๊ณต์ฒ˜: Codef
  • API Endpoint: https://development.codef.io/v1/kr/etc/hr/qnet-certificate/status
  • ์ธ์ฆ ๋ฐฉ์‹: OAuth 2.0 (ํด๋ผ์ด์–ธํŠธ ์ž๊ฒฉ ์ฆ๋ช… ๋ฐฉ์‹)
  • ์š”์ฒญ ๋ฐ์ดํ„ฐ: ์‚ฌ์šฉ์ž ์ •๋ณด์™€ ์ž๊ฒฉ์ฆ ํ™•์ธ์„œ ๋ฐ์ดํ„ฐ

API ์š”์ฒญ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์ง€ํ•œ ์ž๊ฒฉ์ฆ ํ™•์ธ์„œ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•˜๊ณ , Qnet์—์„œ ๋ฐ˜ํ™˜ํ•œ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ์žฅํ•˜๋Š” ์ž๊ฒฉ์ฆ ์†Œ์ง€๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€๋ฅผ ๊ฒ€์ฆํ•˜์˜€์Šต๋‹ˆ๋‹ค.

API ์‘๋‹ต์˜ ๊ฒ€์ฆ์„ ํ†ตํ•ด ์œ ํšจํ•œ ์ž๊ฒฉ์ฆ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋กœ ์ธ์ฆ๋˜์—ˆ์„ ๊ฒฝ์šฐ, ์ธ์ฆ๊ธฐ๊ด€ ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ž๊ฒฉ์ฆ ์†Œ์ง€์ž๋กœ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ ˆ์ฐจ

  1. ์•ก์„ธ์Šค ํ† ํฐ ์š”์ฒญ: Codef API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•ก์„ธ์Šค ํ† ํฐ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ URL: https://oauth.codef.io/oauth/token
    • ์š”์ฒญ ํ—ค๋”: Basic ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ID์™€ ํด๋ผ์ด์–ธํŠธ ์‹œํฌ๋ฆฟ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ ๋ณธ๋ฌธ: grant_type=client_credentials&scope=read
  2. ํ™•์ธ์„œ ์ •๋ณด ์š”์ฒญ: ํš๋“ํ•œ ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธ์„œ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ URL: https://development.codef.io/v1/kr/etc/hr/qnet-certificate/status
    • ์š”์ฒญ ํ—ค๋”:
      • Authorization: Bearer {access_token}
      • Content-Type: application/json
    • ์š”์ฒญ ๋ณธ๋ฌธ: ์‚ฌ์šฉ์ž์˜ ์ •๋ณด ๋ฐ ์ž๊ฒฉ์ฆ ๋ฌธ์„œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Request ์˜ˆ์‹œ

{
    "organization": "0001",
    "userName": "{์„ฑ๋ช…}",
    "docNo": "{๋ฌธ์„œํ™•์ธ๋ฒˆํ˜ธ}"
}

Response ์˜ˆ์‹œ

{
    "resIssueYN": "{๋ฐœํ–‰์—ฌ๋ถ€}", (0์ด๋ฉด ์‹คํŒจ, 1์ด๋ฉด ์„ฑ๊ณต)
    "resResultDesc": "{๊ฒฐ๊ณผ๋ฉ”์‹œ์ง€}",
    "resDocNo": "{๋ฌธ์„œํ™•์ธ๋ฒˆํ˜ธ}",
    "resPublishNo": "{๋ฐœํ–‰๋ฒˆํ˜ธ}",
    "resDocType": "{ํ™•์ธ์„œ์ข…๋ฅ˜}",
    "resType": "{์‹œํ—˜๊ตฌ๋ถ„}",
    "resUserNm": "{์„ฑ๋ช…}",
    "commBirthDate": "{์ƒ๋…„์›”์ผ}",
    "resItemName": "{์ข…๋ชฉ}",
    "resExaminationNo": "{์ˆ˜ํ—˜๋ฒˆํ˜ธ}",
    "resAcquisitionDate": "{์‹œํ–‰์ผ}",
    "resInquiryDate": "{์กฐํšŒ์ผ์ž}"
}


3. ์ฃผ๋ฏผ๋“ฑ๋ก ์ง„์œ„ ์—ฌ๋ถ€ ํ…Œ์ŠคํŠธ

์ฃผ๋ฏผ๋“ฑ๋ก ์ง„์œ„ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€ API๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์ฃผ๋ฏผ๋“ฑ๋ก ์ง„์œ„๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • API ์ œ๊ณต์ฒ˜: Codef
  • API Endpoint: https://development.codef.io/v1/kr/public/mw/identity-card/check-status
  • ์ธ์ฆ ๋ฐฉ์‹: OAuth 2.0 (ํด๋ผ์ด์–ธํŠธ ์ž๊ฒฉ ์ฆ๋ช… ๋ฐฉ์‹)
  • ์š”์ฒญ ๋ฐ์ดํ„ฐ: ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์™€ ๊ณต๋™์ธ์ฆ์„œ

์ด API๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๊ฐ€ ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š”์ง€ ๊ฒ€ํ† ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ ˆ์ฐจ

  1. ์•ก์„ธ์Šค ํ† ํฐ ์š”์ฒญ: Codef API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•ก์„ธ์Šค ํ† ํฐ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ URL: https://oauth.codef.io/oauth/token
    • ์š”์ฒญ ํ—ค๋”: Basic ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ID์™€ ํด๋ผ์ด์–ธํŠธ ์‹œํฌ๋ฆฟ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ ๋ณธ๋ฌธ: grant_type=client_credentials&scope=read
  2. ์ฃผ๋ฏผ๋“ฑ๋ก ์ •๋ณด ์š”์ฒญ: ํš๋“ํ•œ ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์‚ฌ์šฉ์ž ์ •๋ณด์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ URL: https://development.codef.io/v1/kr/public/mw/identity-card/check-status
    • ์š”์ฒญ ํ—ค๋”:
      • Authorization: Bearer {access_token}
      • Content-Type: application/json
    • ์š”์ฒญ ๋ณธ๋ฌธ: ์‚ฌ์šฉ์ž์˜ ์ •๋ณด ๋ฐ ๊ณต๋™ ์ธ์ฆ์„œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Request ์˜ˆ์‹œ

{
    "organization": "0002",
    "loginType": "0",
    "certType": "1",
    "certFile": "{BASE64๋กœ Encoding๋œ ์ธ์ฆ์„œ derํŒŒ์ผ ๋ฌธ์ž์—ด}",
    "keyFile": "{BASE64๋กœ Encoding๋œ ์ธ์ฆ์„œ keyํŒŒ์ผ ๋ฌธ์ž์—ด}",
    "certPassword": "{RSA์•”ํ˜ธํ™”๋œ ์ธ์ฆ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ}",
    "birthDate": "{์ƒ๋…„์›”์ผ}",
    "identity": "{์‚ฌ์šฉ์ž ์ฃผ๋ฏผ๋ฒˆํ˜ธ}",
    "userName": "{์‚ฌ์šฉ์ž ์ด๋ฆ„}",
    "issueDate": "{๋ฐœ๊ธ‰์ผ์ž}", (YYYYMMDD ํ˜•์‹)
}

Response ์˜ˆ์‹œ

{
    "resUserNm": "{์„ฑ๋ช…}",
    "resUserIdentiyNo": "{์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ}", (๋’ค 7์ž๋ฆฌ๋Š” * ๋กœ ํ‘œ์‹œ๋จ)
    "resAuthenticity": "{์ง„์œ„ํ™•์ธ}", ("0": false, "1": true)
    "resAuthenticityDesc": "{์ง„์œ„ํ™•์ธ ๋‚ด์šฉ}"
}


4. ์—ฌ๊ถŒ ์œ ํšจ์„ฑ ๋ฐ ์ธ์ฆ ํ…Œ์ŠคํŠธ

์—ฌ๊ถŒ ์œ ํšจ์„ฑ ๋ฐ ์ธ์ฆ ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์šฉ์ž์˜ ์—ฌ๊ถŒ ์ •๋ณด๊ฐ€ ์œ ํšจํ•œ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ์™ธ๋ถ€ API๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์—ฌ๊ถŒ ์ •๋ณด๊ฐ€ ์‹ค์ œ๋กœ ์œ ํšจํ•œ์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

API ๊ฐœ์š”

  • API ์ œ๊ณต์ฒ˜: Codef
  • API Endpoint: https://development.codef.io/v1/kr/public/mw/passport-data/status
  • ์ธ์ฆ ๋ฐฉ์‹: OAuth 2.0 (ํด๋ผ์ด์–ธํŠธ ์ž๊ฒฉ ์ฆ๋ช… ๋ฐฉ์‹)
  • ์š”์ฒญ ๋ฐ์ดํ„ฐ: ์—ฌ๊ถŒ ์ •๋ณด์™€ ์ธ์ฆ์„œ ๋ฐ์ดํ„ฐ

ํ…Œ์ŠคํŠธ ์ ˆ์ฐจ

  1. ์•ก์„ธ์Šค ํ† ํฐ ์š”์ฒญ: Codef API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•ก์„ธ์Šค ํ† ํฐ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

    • ์š”์ฒญ URL: https://oauth.codef.io/oauth/token
    • ์š”์ฒญ ํ—ค๋”: Basic ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ID์™€ ํด๋ผ์ด์–ธํŠธ ์‹œํฌ๋ฆฟ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ ๋ณธ๋ฌธ: grant_type=client_credentials&scope=read
  2. ์—ฌ๊ถŒ ์ •๋ณด ์š”์ฒญ: ํš๋“ํ•œ ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๊ถŒ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ์š”์ฒญ URL: https://development.codef.io/v1/kr/public/mw/passport-data/status
    • ์š”์ฒญ ํ—ค๋”:
      • Authorization: Bearer {access_token}
      • Content-Type: application/json
    • ์š”์ฒญ ๋ณธ๋ฌธ: ์‚ฌ์šฉ์ž์˜ ์—ฌ๊ถŒ ์ •๋ณด ๋ฐ ์ธ์ฆ์„œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ๋ณธ๋ฌธ ์˜ˆ์‹œ

{
    "organization": "0002",
    "loginType": "2",
    "certType": "1",
    "certFile": "{cert_file_encoded}",
    "keyFile": "{key_file_encoded}",
    "certPassword": "{encrypted_cert_password}",
    "userName": "{user_name}",
    "identity": "{identity_number}",
    "passportNo": "{passport_number}",
    "issueDate": "{issue_date}",
    "expirationDate": "{expiration_date}",
    "birthDate": "{birth_date}"
}

"certFile": "{cert_file_encoded}", "keyFile": "{key_file_encoded}" ์‹ค์ œ ๊ณต๋™์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉ

image

์„œ๋ฒ„์—์„œ ์ธ์ฝ”๋”ฉ ๋ฐ ๋””์ฝ”๋”ฉ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์„ ์ถ”์ถœํ•˜์—ฌ Codef์—๊ฒŒ ์ „๋‹ฌ image

์—ฌ๊ถŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์„ฑ๊ณต ์˜ˆ์‹œ

{
    "result": {
        "code": "CF-00000", // ํ•ด๋‹น ์ฝ”๋“œ์˜ ์„ฑ๊ณต ์œ ๋ฌด ๊ฐ€์ด๋“œ https://developer.codef.io/common-guide/error-code
        "extraMessage": "",
        "message": "์„ฑ๊ณต",
        "transactionId": "6715130b28e65e51c0d13262"
    },
    "data": {
        "resAuthenticity": 1,
        "resAuthenticityDesc": ""
    }
}
image

5. ์šด์ „๋ฉดํ—ˆ ์ง„์œ„ํ™•์ธ ํ…Œ์ŠคํŠธ

์™ธ๋ถ€ API๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์šด์ „๋ฉดํ—ˆ์ฆ ์ง„์œ„๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

API ๊ฐœ์š”

  • API ์ œ๊ณต์ฒ˜: Codef
  • API Endpoint: https://development.codef.io/v1/kr/public/ef/driver-license/status
  • ์ธ์ฆ ๋ฐฉ์‹: OAuth 2.0 (ํด๋ผ์ด์–ธํŠธ ์ž๊ฒฉ ์ฆ๋ช… ๋ฐฉ์‹)
  • ์š”์ฒญ ๋ฐ์ดํ„ฐ: ์‚ฌ์šฉ์ž, ์šด์ „๋ฉดํ—ˆ์ฆ ์ •๋ณด์™€ ๊ณต๋™ ์ธ์ฆ์„œ ๋ฐ์ดํ„ฐ

ํ…Œ์ŠคํŠธ ์ ˆ์ฐจ

  1. ์•ก์„ธ์Šค ํ† ํฐ ์š”์ฒญ: Codef API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•ก์„ธ์Šค ํ† ํฐ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ URL: https://oauth.codef.io/oauth/token
    • ์š”์ฒญ ํ—ค๋”: Basic ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ID์™€ ํด๋ผ์ด์–ธํŠธ ์‹œํฌ๋ฆฟ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ ๋ณธ๋ฌธ: grant_type=client_credentials&scope=read
  2. ์šด์ „๋ฉดํ—ˆ ์ •๋ณด ์š”์ฒญ: ํš๋“ํ•œ ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์šด์ „๋ฉดํ—ˆ์ฆ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ์š”์ฒญ URL: https://development.codef.io/v1/kr/public/ef/driver-license/status
    • ์š”์ฒญ ํ—ค๋”:
      • Authorization: Bearer {access_token}
      • Content-Type: application/json
    • ์š”์ฒญ ๋ณธ๋ฌธ: ์‚ฌ์šฉ์ž์˜ ์šด์ „๋ฉดํ—ˆ์ฆ ์ •๋ณด ๋ฐ ์ธ์ฆ์„œ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Request ์˜ˆ์‹œ

{
    "organization": "0001",
    "loginType": "2",
    "certType": "1",
    "certFile": "{BASE64๋กœ Encoding๋œ ์ธ์ฆ์„œ derํŒŒ์ผ ๋ฌธ์ž์—ด}",
    "keyFile": "{BASE64๋กœ Encoding๋œ ์ธ์ฆ์„œ keyํŒŒ์ผ ๋ฌธ์ž์—ด}",
    "certPassword": "{RSA์•”ํ˜ธํ™”๋œ ๊ณต๋™์ธ์ฆ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ}",
    "loginUserName": "{์‚ฌ์šฉ์ž์ด๋ฆ„}",
    "identity": "{์‚ฌ์šฉ์ž ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ}",
    "birthDate": "{์ƒ๋…„์›”์ผYYYYMMDD}",
    "licenseNo01": "{์šด์ „ ๋ฉดํ—ˆ๋ฒˆํ˜ธ01 (์ง€์—ญ)}",
    "licenseNo02": "{์šด์ „ ๋ฉดํ—ˆ๋ฒˆํ˜ธ02 (๋…„๋„)}",
    "licenseNo03": "{์šด์ „ ๋ฉดํ—ˆ๋ฒˆํ˜ธ03}",
    "licenseNo04": "{์šด์ „ ๋ฉดํ—ˆ๋ฒˆํ˜ธ04}",
    "serialNo": "{์•”ํ˜ธ์ผ๋ จ๋ฒˆํ˜ธ}",
    "userName": "{์‚ฌ์šฉ์ž์ด๋ฆ„}",
}

Response ์˜ˆ์‹œ

{
    "resUserNm": "{์„ฑ๋ช…}",
    "commBirthDate": "{์ƒ๋…„์›”์ผ}",
    "resAuthenticity": "{์ง„์œ„ํ™•์ธ}", ("0": false, "1": true, "2": ์ „์‚ฐ์ •๋ณด๋งŒ ์ผ์น˜)
    "resLicenseNumber": "{์šด์ „๋ฉดํ—ˆ ๋ฒˆํ˜ธ}",
    "resAuthenticityDesc1": "{์ „์‚ฐ์ž๋ฃŒ์™€์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.}",
    "resAuthenticityDesc2": "{์‹๋ณ„๋ฒˆํ˜ธ๊ฐ€์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.}"
}




๋ผ์ด์„ ์Šค ์ •๋ณด

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ์˜ ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Apache License 2.0์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  1. Hyperledger Fabric

  2. Apache PDFBox

  3. UnivCert (ํ•™์ƒ ์ธ์ฆ)


About

[๐Ÿ†2024 ๊ณต๊ฐœSW ๊ฐœ๋ฐœ์ž๋Œ€ํšŒ ๋ผ์˜จ์‹œํ์–ด ๋Œ€ํ‘œ์ƒ๐Ÿ†] Web3 ์ „์ž์ง€๊ฐ‘ ์‹œ์Šคํ…œ : "Web 3.0 ์‹ ์›/์ž๊ฒฉ์ฆ๋ช… ๊ด€๋ฆฌ ์‹œ์Šคํ…œ"

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •