한국어
한국어
Appearance
한국어
한국어
Appearance
수령자 포털은 badges.ninja/me 에 있는 셀프서비스 영역으로, 배지를 수여받은 누구나 계정 없이 로그인해 badges.ninja를 통해 받은 모든 자격 증명을 열람하고, 공유용 공개 프로필을 꾸밀 수 있습니다.
발급자 대시보드와는 별개의 경험입니다.
| 대상 | URL | 인증 |
|---|---|---|
| 발급자(배지를 수여하는 사람) | /dashboard | 실제 계정(이메일 + 비밀번호 / SSO) |
| 수령자(배지를 획득하는 사람) | /me | 이메일로 전달되는 매직 링크 — 계정도 비밀번호도 없음 |
| 누구나(검증자) | /awards/<guid>, /verify/<guid>, /u/<handle> | 없음 — 완전 공개 |
왜 비밀번호가 없나요?
수령자가 받은 배지를 보기 위해 또 하나의 로그인 정보를 기억할 필요는 없어야 합니다. 대신 우리는 일회용 링크를 이메일로 보냅니다.
badges.ninja/me 를 방문합니다. 페이지에 이메일 입력란 하나만 표시됩니다.

배지를 받은 이메일 주소를 입력하고 로그인 링크 보내기 를 클릭합니다.
해당 주소에 수여가 있든 없든 "받은 편지함을 확인하세요"라는 응답을 돌려줍니다. 이로써 특정 이메일이 플랫폼의 어떤 발급자로부터 배지를 받은 적 있는지를 유출하지 않습니다.
해당 주소에 수여가 있다면 "Badges Ninja 포털에 로그인하세요" 라는 제목의 이메일이 도착합니다. 버튼은 하나뿐입니다.
내 포털 열기
링크는 24시간 유효하며 한 번만 작동합니다. 클릭하기 전에 만료되면 새로 요청하세요 — 벌칙 없음.
링크를 클릭하면 badges.ninja/me?token=… 이 열립니다. 페이지는 토큰을 1시간짜리 세션 토큰으로 교환하고(브라우저의 sessionStorage 에만 저장, 쿠키에는 절대 저장하지 않음) 배지 월로 리디렉션합니다. 세션은 탭을 닫거나 1시간의 활동이 지나면 — 둘 중 먼저 오는 쪽으로 — 만료됩니다.
로그인하면 포털에는 다음이 표시됩니다.
badges.ninja/u/jane-3a4f) — 이메일의 로컬 부분에서 자동으로 제안되며, 유일성을 위해 4개의 랜덤 문자가 덧붙습니다. 변경 을 클릭해 더 나은 것을 고르세요./u/<handle>)에 나타날지 전환. 수여 자체는 유효하게 남고, 공개적으로 나열되는 항목만 큐레이션합니다.
수여는 한 번에 50개씩 로드됩니다. 더 많다면 하단에 더 보기 버튼이 나타납니다. 백엔드에서 안정적인 커서로 페이지네이션하므로 스크롤 중에도 순서가 흔들리지 않습니다.
헤더의 로그아웃 버튼은 sessionStorage 에서 세션 토큰을 지웁니다. 탭을 닫으면 자동으로 동일한 동작이 수행됩니다.
핸들이 있으면 badges.ninja/u/<handle> 을 방문하는 누구나 당신의 표시 이름, 배지 수, 그리고 클릭 시 공개 수여 페이지를 여는 배지별 카드가 포함된 깔끔한 그리드를 보게 됩니다.

공개 프로필에는 숨기지 않은 배지만 표시됩니다. /u/<handle> URL을 공유하는 데 로그인은 필요 없습니다 — 당신 소유의 완전 공개 페이지입니다.
핸들은 3–20자, a-z 0-9 _ - 만 허용됩니다. 대소문자를 구분하지 않으며 badges.ninja에서 전역 고유합니다. 원하는 핸들이 사용 중이면 명확한 오류가 표시되고 다른 것을 고를 수 있습니다.
포털에서 언제든 핸들을 변경할 수 있습니다 — 새 핸들이 즉시 표준 URL이 되고, 이전 핸들은 다른 사람이 가져갈 수 있게 됩니다. 당신이 이전에 보낸 기존 공유 링크(/u/예전-handle)는 리디렉션하지 않고, 단지 "프로필을 찾을 수 없음" 이라고 표시됩니다.
포털 하단에 Badges Ninja에서 내 데이터 제거 링크가 있습니다. 이 기능은 다음을 수행합니다.
removed:5f3a8b9c…)로 교체합니다. 수여 자체(어서션 JSON, 배지 이미지, 있을 경우 블록체인 증명)는 그대로 유지되어 자격을 무효화하지 않습니다 — 발급자는 여전히 당신의 배지를 보유합니다 — 하지만 당신은 검색 불가 가 됩니다: 어떤 포털에서든 당신의 이메일을 검색하면 결과가 없고, /me 로그인도 수여를 찾지 못합니다./u/<handle> 은 404를 반환하고 해당 핸들은 다른 사람에게 개방됩니다.이 작업은 되돌릴 수 없습니다. 정리가 완료되기 전 마음이 바뀔 때만 새 포털 세션(즉, 새 매직 링크)이 필요합니다.
이 작업이 하지 않는 것
/awards/<guid> 의 JSON 파일)은 검증 목적으로 여전히 유효합니다 — 명세가 그렇습니다.두 가지 가능성:
/awards/<guid> URL 로만 볼 수 있습니다.아직은 아닙니다. 포털은 현재 badges.ninja를 통해 발급된 배지만 표시합니다. 발급자 간 집계("Open Badges Backpack" 모델)는 2010년대 초 Open Badges의 주요 목표였지만, 생태계는 사실상 LinkedIn을 집계자로 삼아 이동했습니다. 우리는 그 영역에서 경쟁할 계획이 없습니다.
네 — 발급자가 LinkedIn 조직 ID를 설정했을 때 모든 공개 수여 페이지(/awards/<guid>)에는 LinkedIn 프로필에 추가 버튼이 있습니다. 이 버튼은 LinkedIn의 Add-to-Profile 딥링크를 사용하므로, 수동 복사·붙여넣기 없이 인증 섹션으로 바로 들어갑니다.
각 수여 페이지는 조회수, 공유수, 다운로드수, LinkedIn 추가 클릭수를 추적합니다. 발급자는 자신의 대시보드에서, 수령자는 공개 수여 페이지에서 이 수치를 봅니다. Credly 관례에 따라 방문자 신원은 결코 기록되지 않습니다 — 카운트만.
24시간. 이후에는 새로 요청하세요 — 속도 제한도, 벌칙도 없습니다.
로그인 후 1시간. 이 시간 안에 페이지를 새로고침하면 세션이 유지되고, 탭을 닫으면 종료됩니다.
아니요. 숨긴 배지는 공개 /u/<handle> 뷰에서 제외됩니다. 포털에 로그인한 동안에만 당신에게 보입니다.
네 — 포털에서 아무 배지나 열고, 공개 수여 페이지의 PNG 다운로드(Open Badges baked) 또는 PDF 인증서 다운로드 버튼을 사용하세요. 둘 다 서명되어 있으며 Open Badges v2 명세로 검증 가능합니다.
수령자가 포털에 접속해도 발급자에게는 아무런 변화가 없습니다 — 발급자 대시보드의 수여 테이블은 완전히 동일하게 작동합니다. 포털은 순수한 추가 기능입니다.
이 글을 읽는 발급자이고 아직 LinkedIn 조직 ID를 설정하지 않았다면 지금 바로 하세요: 발급자 관리 → LinkedIn 추가. 플랫폼에서 가장 큰 "공유율" 레버입니다.
{ kind: "magic", email, exp } 이며 AWS Secrets Manager(recipient/keys:tokenSecret)로 로테이션되는 서버 측 시크릿으로 서명됩니다. 검증 시 { kind: "session", email, exp } 토큰을 발급합니다. DB 기반 세션 테이블이 없습니다.RECIPIENT_EMAIL_LC-TIMESTAMP GSI 를 조회합니다. 이메일은 저장과 조회 전에 소문자로 정규화됩니다.EMAIL_LC 가 저장되어 수령자가 로그인하지 않아도 /u/<handle> 이 수여를 나열할 수 있습니다. 숨긴 수여는 서버 측에서 필터링됩니다.RECIPIENT_EMAIL_LC 를 removed:<random> 로 다시 쓰고, DynamoDB UPDATE 로 평문 RECIPIENT_EMAIL 속성을 제거합니다. 프로필 행은 삭제됩니다.POST /me/auth/request { email } — 매직 링크 이메일 발송POST /me/auth/verify { token } — 세션 토큰 반환GET /me — 프로필 + 수여 첫 페이지(Bearer)GET /me/awards?lastEvaluatedKey=… — 페이지네이션(Bearer)PUT /me/handle { handle } — 핸들 설정/변경(Bearer)PUT /me/awards/{guid}/visibility { hidden: bool } — 숨김 토글(Bearer)POST /me/auth/forget — GDPR 연결 해제(Bearer)GET /u/{handle} — 공개 프로필(인증 불필요)