sejong-univ-auth

Sejong University Member Account Authentication.


Keywords
sejong, univ, auth, authentication, python, sejong-university
License
MIT
Install
pip install sejong-univ-auth==0.3.4

Documentation

sejong-univ-auth Python versions License Release

Sejong University Member Account Authentication

μ„Έμ’…λŒ€ν•™κ΅ ꡬ성원인지 ν™•μΈν•˜κΈ° μœ„ν•œ κ°„νŽΈν•œ 인증 λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€.

Python이라면 μ•„λž˜μ™€ 같은 λ°©λ²•μœΌλ‘œ μ‰½κ²Œ κ΅¬ν˜„ν•΄λ³΄μ„Έμš”!

ν˜Ήμ‹œ λ‹€λ₯Έ μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜μ‹œλ‚˜μš”? κ·Έλ ‡λ‹€λ©΄ 저희듀이 직접 κ°œλ°œν•œ REST APIλ₯Ό μ‚¬μš©ν•΄λ³΄μ„Έμš”!

Easy to install

Pip: pip install sejong-univ-auth

Direct:

  • git clone https://github.com/iml1111/sejong-univ-auth
  • python setup.py install

Easy to use

>>> from sejong_univ_auth import auth
>>> result = auth(id='16011089', password='<my-password>')
>>> result.is_auth
True

Usage

μ„Έμ’…λŒ€ν•™κ΅μ—λŠ” λ‹€μ–‘ν•œ μ›Ή μ„œλΉ„μŠ€κ°€ 있고, ν•˜λ‚˜μ˜ ν¬νƒˆ 멀버 계정을 톡해 인증을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή 라이브러리의 λ™μž‘ 방식은 μ—¬λŸ¬ μ›Ή μ„œλΉ„μŠ€μ˜ 인증 λ™μž‘ ꡬ쑰λ₯Ό 직접 μž¬ν˜„ν•˜μ—¬ λŒ€μ‹ ν•΄μ„œ λ‘œκ·ΈμΈμ„ μˆ˜ν–‰ν•΄λ³Έ ν›„, ν•΄λ‹Ή κ²°κ³Όλ₯Ό ν”„λ‘œκ·Έλž˜λ°μ μœΌλ‘œ ν™œμš©ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.

sejong_univ_authλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•œ endpoint ν•¨μˆ˜λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

def auth(id: str, password: str, methods: Authenticator)
# id, password: μ„Έμ’…λŒ€ν•™κ΅ ν¬νƒˆμ— λ‘œκ·ΈμΈν•˜κΈ° μœ„ν•œ 계정 μ •λ³΄μž…λ‹ˆλ‹€.
# methods: μ–΄λ– ν•œ 인증 λ°©μ‹μœΌλ‘œ 인증을 μ‹œλ„ν• μ§€ κ²°μ •ν•©λ‹ˆλ‹€. (default=Manual)

Methods

ν˜„μž¬ μ‚¬μš©κ°€λŠ₯ν•œ 인증 방식(Method)은 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

from sejong_univ_auth import (
    Manual,
    PortalSSOToken,
    DosejongSession,
    MoodlerSession,
    ClassicSession
)
  • PortalSSOToken

    • μ„Έμ’…λŒ€ν•™κ΅ ν¬νƒˆ μ‚¬μ΄νŠΈμ˜ 인증 λ°©μ‹μž…λ‹ˆλ‹€.
  • DosejongSession

    • dosejong μ‚¬μ΄νŠΈμ˜ μ„Έμ…˜ 인증 λ°©μ‹μž…λ‹ˆλ‹€.
    • 이름, ν•™λ²ˆμ„ μΆ”κ°€λ‘œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • ClassicSession

    • λŒ€μ–‘νœ΄λ¨Έλ‹ˆν‹°μΉΌλ¦¬μ§€ μ‚¬μ΄νŠΈμ˜ μ„Έμ…˜ 인증 λ°©μ‹μž…λ‹ˆλ‹€.
    • ν•¨κ»˜ μ‘°νšŒλ˜λŠ” μΆ”κ°€ μ •λ³΄λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
      • 이름
      • ν•™λ²ˆ
      • ν•™λ…„
      • μž¬ν•™/νœ΄ν•™/수료 μƒνƒœ
      • κ³ μ „ λ…μ„œ 인증 ν˜„ν™©
  • MoodlerSession

    • SJULMS μ‚¬μ΄νŠΈμ˜ μ„Έμ…˜ 인증 λ°©μ‹μž…λ‹ˆλ‹€.
    • 이름, ν•™λ²ˆμ„ μΆ”κ°€λ‘œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • Manual (default)

    • ν˜„μž¬ κ΅¬ν˜„λœ λͺ¨λ“  λ©”μ†Œλ“œλ₯Ό 평균 μ‹€ν–‰ 속도가 λΉ λ₯Έ μˆœμ„œλŒ€λ‘œ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
    • 인증 성곡 및 id/pw 뢈일치둜 μΈν•œ 인증 μ‹€νŒ¨κ°€ λ°˜ν™˜λ  λ•ŒκΉŒμ§€ 순차적으둜 μ‹€ν–‰ν•©λ‹ˆλ‹€.

λ©”μ†Œλ“œλ₯Ό 직접 μ§€μ •ν•˜λŠ” 경우, μ•„λž˜μ™€ 같이 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

>>> from sejong_univ_auth import PortalSSOToken, DosejongSession, auth
>>> auth(id='<your-id>', password='<your-pw>', methods=PortalSSOToken)
>>> auth(id='<your-id>', password='<your-pw>', methods=DosejongSession)
...
# 볡수의 Authenticatorλ₯Ό 순차적으둜 μˆ˜ν–‰ν•  경우
>>> auth(id='<your-id>', password='<your-pw>', methods=[PortalSSOToken, DosejongSession])

볡수의 Authenticatorλ₯Ό list(ν˜Ήμ€ tuple) ν˜•νƒœλ‘œ 주게 될 경우, 순차적으둜 λ©”μ†Œλ“œλ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.

λ§Œμ•½ ν˜„μž¬μ˜ λ©”μ†Œλ“œμ—μ„œ ν˜„μž¬ 인증이 λΆˆκ°€λŠ₯ν•œ(Internel Sever Error λ“±μ˜) 상황일 경우, λ°”λ‘œ λ‹€μŒ λ©”μ†Œλ“œλ‘œ μ‹œν”„νŠΈν•˜μ—¬ 인증을 μ§„ν–‰ν•©λ‹ˆλ‹€.

AuthResponse

인증의 κ²°κ³ΌλŠ” Nametuple의 ν˜•νƒœλ‘œ λ°˜ν™˜λ©λ‹ˆλ‹€.

AuthResponse(
	success=True, 
	is_auth=True, 
	status_code=200, 
	code='success', 
	body={
		'name': 'μ‹ ν¬μž¬', 
		'major': '컴퓨터곡학과'
	}, 
	authenticator='DosejongSession'
)
  • success: 인증 μ„œλ²„ 정상 λ™μž‘ μ—¬λΆ€

    • ν•΄λ‹Ή 인증 μ ˆμ°¨μ— λŒ€ν•˜μ—¬ μ„œλ²„λŠ” 정상적인 κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
    • Value: True / False
  • is_auth: 인증 성곡 μ—¬λΆ€

    • id/pwκ°€ μ •ν™•ν•˜λ”λΌλ„ μ„œλ²„μ˜ μƒνƒœ 이상 및 인증 포맷이 κ°±μ‹ λ˜μ–΄ 라이브러리의 방식과 상이할 경우 인증 성곡을 λ°˜λ“œμ‹œ 보μž₯ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
    • 인증 κ²°κ³Όλ₯Ό μ•Œ 수 없을 경우, None이 λ°˜ν™˜λ©λ‹ˆλ‹€.
    • Value: True / False / None
  • status_code: 인증 μ„œλ²„μ˜ HTTP status code

    • Value: int
  • code: Authenticator λ°˜ν™˜ μ½”λ“œ

    • 인증이 성곡할 경우, 'success'둜 ν†΅μΌν•©λ‹ˆλ‹€.
    • 인증이 μ‹€νŒ¨ 및 μ•Œ 수 없을 경우, 각각의 뢄기에 λ§žλŠ” μ½”λ“œ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
    • Value: string
  • body: 메타데이터

    • 인증 결과에 κ΄€λ ¨λœ 메타데이터λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.
      • 인증 μ‹€νŒ¨μ‹œμ˜ 보닀 μ •ν™•ν•œ μ‹€νŒ¨ μ‚¬μœ 
      • 이름/ν•™λ²ˆ/ν•™λ…„/μž¬ν•™ μƒνƒœ λ“±μ˜ μΆ”κ°€ 정보
    • Value: dict
  • authenticator: ν•΄λ‹Ή 인증에 μ‚¬μš©λœ Authenticator 클래슀

Sejong Auth API

Java, Node λ“± λ‹€λ₯Έ μ–Έμ–΄λ₯Ό μ‚¬μš©μ€‘μ΄μ‹  ν•™μš°λΆ„λ“€μ„ μœ„ν•΄ 저희듀이 κ°œλ°œν•œ REST APIλ₯Ό μ‚¬μš©ν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

  • 단, ν•΄λ‹Ή API의 경우, 지속적인 지원을 보μž₯ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

Request

method의 경우, 기쑴에 μ‚¬μš©κ°€λŠ₯ν•œ λ©”μ†Œλ“œλ₯Ό "Manual", "DosejongSession"κ³Ό 같은 ν˜•μ‹μœΌλ‘œ κ·ΈλŒ€λ‘œ μž…λ ₯ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€. 볡수의 λ©”μ†Œλ“œμ— λŒ€ν•œ 순차적인 ν˜ΈμΆœμ€ ν˜„μž¬ μ§€μ›λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

POST https://auth.imsejong.com/auth HTTP/1.1
Host: auth.imsejong.com
{
    "id": "<ν•™λ²ˆ>",
    "pw": "<λΉ„λ°€λ²ˆν˜Έ>",
    "method": "<μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” λ©”μ†Œλ“œ>"
}

Response

{
    "msg": "success",
    "result": {
        "authenticator": "DosejongSession",
        "body": {
            "major": "컴퓨터곡학과",
            "name": "μ‹ ν¬μž¬"
        },
        "code": "success",
        "is_auth": true,
        "status_code": 200,
        "success": true
    },
    "version": "0.3.3"
}

References