디풀 서비스 설명서
  • 😎Dipull. 디풀.
  • 계정 서비스 사용 안내
    • 🖨️회원가입 (Register)
    • ✏️계정 정보 수정 (Edit)
  • 학생 서비스 사용 안내
    • 📍자습 위치 관련 (Position)
      • 📱핸드폰으로 자습 위치 설정하기 (Phone)
      • ⏱️나의 위치 예약하기 (Book)
      • 🥄(일반 학생) 자습 위치 통계보기 (Statistics)
      • 🥄(도우미 & 선생님) 자습 위치 통계보기 (Statistics)
      • 📠자습 위치 설정 키오스크 사용법 (Kiosk)
    • 😇생활 관련 (Life)
      • ⏰기상곡 신청 (Wakeup)
      • 🚿세탁 및 건조기 신청 (Machine)
    • 🛌기숙사 관련 (Dormitory)
      • 🏠잔류 신청 (Stay)
      • 🤟외출 / 급식변경 / 자기계발외출 신청 (Outing)
      • 🥳금요귀가 신청 (Homecoming)
  • 선생님 서비스 사용 안내
    • 📍자습 위치 관련 (Position)
      • 👩‍💼자습 도우미 관리하기 (Manage)
    • 😉생활관 관리 페이지 (Dormitory)
      • 🏠잔류 신청 관리하기 (Stay)
      • 🤟외출 신청 관리하기 (Outing)
      • 🥳금요귀가 신청 관리하기 (Homecoming)
      • ⏰기상곡 관리하기 (Wakeup)
  • 개발자 서비스 사용 안내
    • 👩‍💻Oauth 개발 안내
    • ⚙️지원하는 API
      • 😄시간표 [Timetable]
      • 🍖당일 급식메뉴 (Meal)
    • 💡개발 기여 안내 (Contribute)
  • 소소한 꿀팁
    • 🔗홈 화면에 바로가기 만들기 (Link)
  • 이용 약관
    • 🔐개인정보 처리 방침 (Privacy)
  • 디풀 바로가기
  • 디풀 계정 센터 바로가기
Powered by GitBook
On this page
  • 1. 클라이언트 등록 방법
  • 2. 서비스 연동 방법
  1. 개발자 서비스 사용 안내

Oauth 개발 안내

디풀 계정 센터와 연동하여 다양한 서비스를 개발 해 보세요.

Previous기상곡 관리하기 (Wakeup)Next지원하는 API

Last updated 11 months ago

1. 클라이언트 등록 방법

  1. 아래 디풀 계정 센터에 접속하여 본인 계정으로 로그인한다.

  2. 탭에 접속하여 본인의 서비스에 맞게 정보를 입력한다.

    • 서비스 이름 본인의 서비스 이름을 입력하세요. 아래와 같이 표시됩니다.

    • 가져올 정보 어떤 정보를 가져올 지 선택합니다. 자세한 설명은 참고.

    • Redirect Uri 목록 본인이 허용할 Redirect Uri를 입력합니다. 여기에 입력되지 않은 Uri의 경우, 아래와 같이 거부됩니다.

  3. 추가하기 버튼을 눌러 서비스가 등록되었습니다. 문구가 나오면 탭에 접속한다.

  4. 등록한 서비스 이름 옆에 뜨는 문자열이 client 값이다.

2. 서비스 연동 방법

  1. 본인의 서비스에서 로그인 버튼을 만든 뒤, 클릭 시 아래 URL로 redirect되게 설정한다. https://auth.dimigo.net/oauth?client=<client_값>&redirect=<redirect할_uri>

  2. 로그인 과정 후, redirect uri 의 searchParams 맨 뒤에 token 으로 요청한 정보가 추가됩니다.

  3. token은 JWT 방식으로 RS256 암호화 되어 있습니다. 토큰 유효 시간은 5분입니다.

  4. 에서 jwtVerify에 필요한 public키를 받아와(GET) 복호화를 하면 아래와 같은 type으로 구성되어 있습니다. public key는 바뀔 수 있으니, 매번 위 URL에 요청하여 public를 받아와야 합니다.

    {
      data: {
        id: string; // 식별번호
        email: string; // 이메일
        gender: "male" | "female"; // 성별
        name: string; // 이름
        number: number; // 학번
        type: "teacher" | "student"; // 사용자 종류
        profile_image: string; // 프로필 이미지 URL
      };
      iss: string;
      aud: string;
      iat: number;
      exp: number;
    }
  5. 이제 이 정보를 잘 활용하면 됩니다~!!

  6. 예시 코드

    /*
      전체 소스코드는 아래를 참고해주세요.
      https://github.com/jeamxn/dimigoin-pull-service/blob/main/src/app/auth/login/route.ts
    */
    
    import axios from "axios";
    import * as jose from "jose";
    
    type ClientType = {
      id: string; // 식별번호
      email: string; // 이메일
      gender: "male" | "female"; // 성별
      name: string; // 이름
      number: number; // 학번
      type: "teacher" | "student"; // 사용자 종류
      profile_image: string; // 프로필 이미지 URL
    };
    
    // 계정 센터에서 넘겨준 JWT 토큰
    const token = "";
    
    // 디미고인 계정 센터에서 Public Key 가져오기
    const public_key = await axios.get("https://auth.dimigo.net/oauth/public");
    const public_key_encodes = await jose.importSPKI(public_key.data, "RS256");
    
    // 디미고인 토큰 디코딩
    const decodedToken = await jose.jwtVerify(token, public_key_encodes);
    const data = decodedToken.payload as {
      data: ClientType;
      iss: string;
      aud: string;
      iat: number;
      exp: number;
    };
👩‍💻
https://auth.dimigo.net
개발자 전용 > 추가
개발자 전용 > 수정
https://auth.dimigo.net/oauth/public
2. 서비스 연동 방법