Konsep
Beberapa gagasan menjelaskan hampir semua hal di Usher: tempat segala sesuatu berada, siapa yang menerbitkan token, tempat orang masuk, dan berapa lama setiap token berlaku.
Ruang kerja, proyek, dan lingkungan
- Ruang kerja adalah tim atau perusahaan Anda di Usher Console. Anggota dan log auditnya menjadi milik ruang kerja itu.
- Proyek adalah satu produk: aplikasi web Anda, atau portal mitra. Satu ruang kerja dapat menampung banyak proyek.
- Lingkungan adalah satu salinan proyek yang sedang berjalan, biasanya pengembangan dan produksi. Di lingkunganlah orang, aplikasi, kunci, dan pengaturan berada.
Ruang kerja · Acme Ltd
Proyek · Web
- development · wise-otter-42
- production · acme
Proyek · Portal mitra
- development · calm-heron-17
- production · acme-partners
Lingkungan tidak berbagi apa pun yang penting. Masing-masing memiliki skema Postgres sendiri, kunci penandatanganan sendiri, dan rahasia sendiri yang disegel dengan kunci datanya sendiri. Orang yang mendaftar di pengembangan tidak ada di produksi, dan token dari satu lingkungan tidak pernah bisa diverifikasi dengan kunci lingkungan lainnya.
Admin ruang kerja dapat menghapus proyek dari bagian akhir halaman Ikhtisar proyek itu, setelah mengetik namanya. Semua lingkungan di dalamnya hilang sekaligus: orang, aplikasi, kunci, dan pengaturannya, serta setiap sesi dan token yang pernah diberikannya. Alamatnya berhenti merespons dan tidak pernah diberikan lagi, sehingga aplikasi yang masih memercayai salah satunya tidak bisa dikelabui oleh proyek milik orang lain.
Penerbit
Setiap lingkungan adalah penerbit (issuer) OpenID Connect tersendiri, di host-nya sendiri pada domain tenant:
https://<handle>.usherid.com- Lingkungan produksi memiliki handle yang Anda pilih: 3 sampai 32 huruf kecil, angka, dan tanda hubung tunggal, seperti nama perusahaan Anda. Handle yang pernah dipakai tidak pernah diberikan lagi.
- Lingkungan pengembangan mendapat handle acak, seperti
wise-otter-42, yang tidak akan dikira sebagai merek oleh siapa pun.
Penerbit ditetapkan saat lingkungan dibuat, karena setiap token yang ditandatanganinya mencantumkan penerbit itu di iss, dan setiap aplikasi yang memercayainya memeriksa nilai tersebut.
Domain tenant adalah domain terdaftar yang berbeda dari domain milik Usher (usheridentity.com), sehingga halaman masuk pelanggan tidak pernah same-site dengan Usher Console, dan cookie bersifat host-only: browser mengirim cookie suatu lingkungan hanya ke lingkungan itu.
Lobby
Lobby adalah halaman masuk yang di-hosting setiap lingkungan di penerbitnya. Aplikasi Anda mengarahkan orang ke sana; Lobby memasukkan mereka lalu mengirim mereka kembali.
- Lobby selalu menyebutkan aplikasi tujuan orang tersebut, di chip “Melanjutkan ke”.
- Lobby hanya menawarkan metode yang diizinkan lingkungan: kunci sandi, kode lewat email, tautan ajaib, akun sosial (Google, GitHub, Microsoft, Apple), dan kata sandi.
- Lobby dapat mewajibkan faktor kedua: aplikasi autentikator (dengan kode cadangan) atau kunci sandi.
- Lobby dapat terbuka untuk siapa saja, atau dibatasi pada daftar tamu berisi alamat dan domain.
Tampilannya sama dari produk mana pun orang itu datang. Itu disengaja: orang belajar seperti apa Lobby yang asli, dan menyadari jika sebuah halaman bukan Lobby.
Akun Usher
Sebagian besar lingkungan memiliki penggunanya sendiri. Akun Usher berbeda: satu akun yang membuat seseorang bisa masuk ke setiap aplikasi yang menawarkan Lanjutkan dengan Usher. Orang mengelola akunnya di account.usheridentity.com.
Token dan masa berlakunya
| Token | Default | Dapat diatur ke | Kegunaannya |
|---|---|---|---|
| Kode otorisasi | 5 menit | Tetap | Ditukar sekali dengan token. Sekali pakai. |
| Token ID | 10 menit | 1 sampai 60 menit | Memberi tahu aplikasi Anda siapa yang masuk. Bukan untuk memanggil API. |
| Token akses | 10 menit | 1 sampai 60 menit | Dikirim ke API Anda, yang memeriksanya. |
| Token refresh | 30 hari | 1 sampai 90 hari | Mendapatkan token akses baru. Dirotasi setiap kali dipakai. Memerlukan offline_access. |
| Token akses mesin | 15 menit | 1 sampai 60 menit | Untuk client_credentials: server tanpa orang di baliknya. |
| Kode lewat email, tautan ajaib | 10 menit | Tetap | Satu kali masuk. Kode memberi tiga kali percobaan. |
Sesi di Lobby juga punya masa berlaku: sesi berakhir setelah 7 hari tidak dipakai (1 sampai 30), dan setelah total 30 hari (1 sampai 90). Mengubah hal yang sensitif, seperti alamat email, memerlukan proses masuk dalam 10 menit terakhir.
Kunci penandatanganan
Secara default, token ditandatangani dengan RS256; sebuah lingkungan dapat menggunakan ES256 atau EdDSA sebagai gantinya. Kunci publiknya dipublikasikan di jwks_uri lingkungan, sehingga pustaka Anda mengambilnya, dan mengambil kunci baru saat kunci dirotasi.
Cakupan
| Cakupan | Yang diterima aplikasi Anda |
|---|---|
openid | Wajib. Token ID dengan sub orang tersebut. |
profile | Nama dan foto mereka. |
email | Alamat email mereka, dan apakah alamat itu sudah diverifikasi. |
offline_access | Token refresh, agar mereka tetap masuk. |