Coder Social home page Coder Social logo

inha-ice / authorice Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 677 KB

[CANCELED] Inha Univ. ICE Student Association Single Sign-On Service

Home Page: https://inha-ice.github.io/authorice/

JavaScript 70.09% Dockerfile 0.59% Vue 29.31%
authentication authorization engineering ice inha-university service single-sign-on

authorice's People

Contributors

astro36 avatar dependabot[bot] avatar

Watchers

 avatar  avatar

authorice's Issues

회원 API 구현

  • 사용자 정보공개설정에 따른 정보 필터링
  • 사용자 강퇴 구현
  • 사용자 로그 조회 구현
  • 사용자 정보공개설정 조회
  • 사용자 권한 수정
  • 사용자 비밀번호 초기화
  • SQL 트랜잭션으로 처리
  • 테스트
  • 문서화

사용자 UI 제작

  • 로그인 및 회원가입 페이지
  • 내 정보 조회 및 수정 페이지
  • 관리자용 회원 관리 페이지
  • 페이지 배포

서버 로그 저장

  • 사용자 보안 로그
  • 서버 요청 로그
  • 로그를 파일로 저장하고 관리

사용자 정보보안 강화

사용자 인증 및 개인정보 열람

access_token 관리

웹사이트의 도메인이 다르면 다른 토큰이 발급되며 발급된 토큰의 aud 클레임을 이용해 발급대상을 식별합니다.

aud에는 웹페이지 URI 또는 앱의 패키지 명이 입력되어야 합니다.

See: RFC 7519 - JSON Web Token (JWT)

access_token은 body 형태로만 전달되며, 쿠키를 통해서는 전달되지 않습니다.

웹의 경우, 발급 받은 access_tokenlocalStorageaccess_token=aaa.bbb.ccc 형태로 저장합니다.

access_token 발급 과정

Vue.js와 같이 모든 코드가 공개되어 api_secret을 사용할 수 없는 환경에 대해 다룹니다.

  1. 로그인이 필요할 경우, 웹페이지를 로그인 화면으로 리다이렉션시킵니다. 이때, param으로 client_id, redirect_uri, state를 전송합니다.
  2. 해당 기기가 인증서버에 로그인한 적이 없다면 로그인 화면이 보여집니다.
  3. client_id를 이용해 redirect_uri가 클라이언트 개발자에 의해 등록된 URI인지 확인합니다.
  4. state는 Cross-site Request Forgery 공격 방어를 위해 저장하는 값 입니다. 결과가 리다이렉트 될 때 입력한 state 값이 그대로 전달되며 클라이언트는 이 값을 검증할 필요가 있습니다.
  5. 로그인이 완료되면 이전에 해당 클라이언트 로그인을 이용한 적이 있는지 확인합니다. 기록이 없다면 클라이언트가 어떤 정보를 열람할 수 있는지 확인할 수 있는 화면이 보여집니다.
  6. 개인정보 열람 동의 과정을 거치게 되면 최종적으로 웹페이지는 {redirect_uri}?code={authorize_code}&state={state}로 리다이렉션됩니다.
  7. 클라이언트는 state 값을 대조하고 획득한 authorize_code를 인증서버에 전송해 access_token을 발급받습니다.

참고: Kakao Developers | REST API 개발가이드 - 사용자 관리

ACL 관리

클라이언트마다 서로 다른 ACL를 가질 수 있습니다. access_tokenaud를 이용하여 클라이언트마다의 ACL를 제어합니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.