PFOS のアプリをつなぐ(OpenID Connect)
pfos-ID は、OpenID Connect と OAuth 2.1 の認可サーバーです。PFOS のアプリは、標準のライブラリでつなげます。
住所
- 発行者(issuer)
https://id.pfos.school- OIDC の案内
- https://id.pfos.school/.well-known/openid-configuration
- 認可
https://id.pfos.school/oauth2/authorize- トークン
https://id.pfos.school/oauth2/token- 署名鍵(JWKS)
https://id.pfos.school/oauth2/jwks- UserInfo
https://id.pfos.school/oauth2/userinfo- ログアウト
https://id.pfos.school/oauth2/end-session
ほかの住所と、使える方式は、OIDC の案内に書いてあります。
つなぐ手順
- 運営者に、連携アプリの登録を頼みます。PFOS のアプリは、同意の画面を出さずにログインできます。
- アプリで ES256 の鍵を作ります。秘密鍵はアプリのシークレットに入れ、公開鍵(JWK)を運営者に登録してもらいます(
private_key_jwt)。 - ログインのときは、
/oauth2/authorizeにresponse_type=code、code_challenge(S256)、state、nonce、scope=openid profileを付けて送ります。 - 戻ってきたら、
issとstateを確かめてから、/oauth2/tokenでコードをトークンに換えます。 - IDトークンを
/oauth2/jwksの鍵で検証し、iss、aud、exp、nonceを確かめます。 - 利用者は
subで見分けます。preferred_username(@ID)とemailは変わることがあります。 - 必要なら
backchannel_logout_uriを用意します。ログアウトトークンを受け取ったら、アプリのセッションを消します。
決まり
- ログインに使えるのは、認可コードと PKCE(S256)の組み合わせだけです。
- 戻り先(
redirect_uri)は、登録したものと完全に同じでなければ使えません。 - ブラウザやスマホの中だけで動くアプリは、鍵を持たない公開クライアント(
none)にします。PKCE は必須です。client_secretは使えません。
使える権限(スコープ)
| スコープ | できること |
|---|---|
openid | pfos-ID でログインしたことを確かめる |
profile | 表示名と @ID を見る |
email | メールアドレスを見る |
offline_access | あなたがいないときも接続を保つ |
me:read | あなたの pfos-ID の情報(@ID、表示名)を見る |
agents:read | あなたのエージェント ID と、接続中のエージェントを見る |
agents:register | 新しいエージェント ID の登録を始める(承認はあなたが pfos-ID で行います) |