Skip to main content

Unified Python client for Kyoto University SSO services (KULASIS / KULMS / MyKULINE / PandA).

Project description

kuauth

PyPI version Python License: MIT Context7 Indexed Context7 llms.txt

京都大学の SSO (KULASIS / KULMS / MyKULINE / PandA) を単一のセッションで 叩くための Python クライアント。ログイン後は各サービスを通常の get() / post() で呼び出せる。

インストール

uv add kuauth

Quickstart

from kuauth import KyotoUAuth, KULASIS, KULMS, MyKULINE, PandA

auth = KyotoUAuth(
    username="a0XXXXXX",
    password="your-password",
    # onetime_password="424242",             # 手元の 6 桁コードを 1 回だけ使う
    otp_callback=lambda: input("OTP: "),     # 対話的スクリプト
    # totp_secret="JBSWY3DPEHPK3PXP",        # cron / CI など無人実行
).login()

print(KULASIS(auth).get("/student/u/t/top").text)           # 教務 (Shift_JIS 自動デコード)
print(KULMS(auth).get("/portal").text)                      # Sakai LMS
print(MyKULINE(auth).get("/opac/opac_search/").text)        # 図書館 OPAC
print(PandA(auth).get("/portal").text)                      # 旧 LMS (ECS CAS)

auth.close()

認証方法

OTP の渡し方は 3 通り。

引数 用途
onetime_password="424242" 手元の 6 桁コードを 1 回だけ使う
otp_callback=lambda: input("OTP: ") 対話的スクリプト
totp_secret="JBSWY3DPEHPK3PXP" cron / CI など無人実行

TOTP シークレットは京大の多要素認証マニュアル に従って認証アプリを登録する際の QR に埋め込まれた otpauth://totp/...?secret=XXXX&...secret パラメータ。登録後は QR が再表示されないので、登録画面で控えておくか、 一度アプリを解除して再登録する。

サービス一覧

Service Base URL 認証
KULASIS https://www.k.kyoto-u.ac.jp IIMC Shibboleth
KULMS https://lms.gakusei.kyoto-u.ac.jp IIMC Shibboleth
MyKULINE https://kuline.kulib.kyoto-u.ac.jp IIMC Shibboleth
PandA https://panda.ecs.kyoto-u.ac.jp ECS CAS (OTP 不要)

PandA は IIMC の Shibboleth ではなく ECS の CAS サーバで認証するため、 KyotoUAuthtotp_secret 等は使用されない (username / password のみ)。

KUMOI (Microsoft 365) はテナント admin consent 要でスコープ外。

個別エンドポイントのラッパメソッドは持たない設計。HAR ファイルから URL と フォーム構造を特定すれば、KULASIS(auth).post(...) などを使って呼び出し側で 任意のページを叩ける。

テスト

uv run pytest tests/unit -q      # ネットワーク不要
uv run pytest tests/replay -q    # respx でモックした E2E

実 IdP と実サービスを叩く統合テストは KUAUTH_LIVE=1 を指定しない限り すべて skip される。実行するには以下の環境変数をセットする:

# bash / Git Bash
KUAUTH_LIVE=1 \
  KUAUTH_USERNAME=a0XXXXXX \
  KUAUTH_PASSWORD=... \
  KUAUTH_TOTP_SECRET=JBSWY3DPEHPK3PXP \
  uv run pytest tests/integration -q
# PowerShell
$env:KUAUTH_LIVE="1"
$env:KUAUTH_USERNAME="a0XXXXXX"
$env:KUAUTH_PASSWORD="..."
$env:KUAUTH_TOTP_SECRET="JBSWY3DPEHPK3PXP"
uv run pytest tests/integration -q

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kuauth-0.1.0.tar.gz (37.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kuauth-0.1.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file kuauth-0.1.0.tar.gz.

File metadata

  • Download URL: kuauth-0.1.0.tar.gz
  • Upload date:
  • Size: 37.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.12

File hashes

Hashes for kuauth-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fbc9a914933320f4abd556651ae134726045abb8119e4420e1fec1523b066d70
MD5 2088f01803476b5e07b59a5c6f0709e0
BLAKE2b-256 aaee832fc6175a4876ef808a2713a9415ec7c6ebbae1714ff1e01756d923da04

See more details on using hashes here.

File details

Details for the file kuauth-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: kuauth-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.12

File hashes

Hashes for kuauth-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a45affe1f99095d0ae766d14552174bd9b18a7de79113a585d620393c8c0bfda
MD5 a860b193a21a8003cc8c3405db622805
BLAKE2b-256 96b5e9032f0842a44cee7821e3ebb2803551cfff5db437f75fae2940aab0970b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page