sejong-univ-auth
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"
}