Konsep
Beberapa idea menerangkan hampir semua perkara dalam Usher: di mana sesuatu berada, siapa yang mengeluarkan token, di mana orang daftar masuk, dan berapa lama setiap token bertahan.
Ruang kerja, projek dan persekitaran
- Ruang kerja ialah pasukan atau syarikat anda dalam Usher Console. Ahli dan log auditnya adalah miliknya.
- Projek ialah satu produk: aplikasi web anda, atau portal rakan kongsi. Satu ruang kerja boleh menyimpan banyak projek.
- Persekitaran ialah satu salinan projek yang sedang berjalan, biasanya pembangunan dan produksi. Persekitaran ialah tempat orang, aplikasi, kunci dan seting berada.
Ruang kerja · Acme Ltd
Projek · Web
- development · wise-otter-42
- production · acme
Projek · Portal rakan kongsi
- development · calm-heron-17
- production · acme-partners
Persekitaran tidak berkongsi apa-apa yang penting. Setiap satu mempunyai skema Postgres tersendiri, kunci tandatangan tersendiri, dan rahsia tersendiri yang dimeterai di bawah kunci datanya sendiri. Orang yang mendaftar dalam pembangunan tidak wujud dalam produksi, dan token daripada satu persekitaran tidak boleh sekali-kali disahkan dengan kunci persekitaran yang satu lagi.
Pentadbir ruang kerja boleh memadamkan projek dari hujung halaman Gambaran keseluruhan projek itu, selepas menaip namanya. Setiap persekitaran di dalamnya hilang serentak: orang, aplikasi, kunci dan setingnya, serta setiap sesi dan token yang pernah diberikannya. Alamatnya berhenti menjawab dan tidak akan diberikan lagi, jadi aplikasi yang masih mempercayai salah satunya tidak boleh diperdaya oleh projek orang lain.
Pengeluar
Setiap persekitaran ialah pengeluar (issuer) OpenID Connect tersendiri, di hosnya sendiri pada domain penyewa:
https://<handle>.usherid.com- Persekitaran produksi mempunyai handle yang anda pilih: 3 hingga 32 huruf kecil, digit dan tanda sempang tunggal, seperti nama syarikat anda. Handle yang pernah digunakan tidak akan diberikan lagi.
- Persekitaran pembangunan mendapat handle rawak, seperti
wise-otter-42, yang tidak akan disangka jenama oleh sesiapa.
Pengeluar ditetapkan apabila persekitaran dicipta, kerana setiap token yang ditandatanganinya menamakannya dalam iss, dan setiap aplikasi yang mempercayainya menyemak nilai itu.
Domain penyewa ialah domain boleh daftar yang berbeza daripada domain Usher sendiri (usheridentity.com), jadi halaman daftar masuk pelanggan tidak pernah berada dalam laman yang sama dengan Usher Console, dan kuki adalah hos sahaja: pelayar menghantar kuki sesebuah persekitaran kepada persekitaran itu sahaja.
Lobby
Lobby ialah halaman daftar masuk yang dihoskan oleh setiap persekitaran di pengeluarnya. Aplikasi anda menghantar orang ke sana; ia mendaftar masuk mereka dan menghantar mereka kembali.
- Ia sentiasa menamakan aplikasi yang dituju oleh orang itu, dalam cip “Meneruskan ke”.
- Ia hanya menawarkan kaedah yang dibenarkan oleh persekitaran itu: kunci laluan, kod melalui e-mel, pautan ajaib, akaun sosial (Google, GitHub, Microsoft, Apple) dan kata laluan.
- Ia boleh mewajibkan faktor kedua: aplikasi pengesah (dengan kod sandaran) atau kunci laluan.
- Ia boleh dibuka kepada sesiapa sahaja, atau dihadkan kepada senarai tetamu alamat dan domain.
Rupanya sama tidak kira produk mana yang menghantar orang itu. Ini disengajakan: orang belajar rupa Lobby yang sebenar, dan perasan apabila sesebuah halaman bukan Lobby.
Akaun Usher
Kebanyakan persekitaran mempunyai pengguna sendiri. Akaun Usher berbeza: satu akaun yang mendaftar masuk seseorang ke setiap aplikasi yang menawarkan Teruskan dengan Usher. Orang mengurus akaun mereka di account.usheridentity.com.
Token dan jangka hayat
| Token | Lalai | Boleh ditetapkan kepada | Kegunaannya |
|---|---|---|---|
| Kod kebenaran | 5 minit | Tetap | Ditukar sekali dengan token. Sekali guna. |
| Token ID | 10 minit | 1 hingga 60 minit | Memberitahu aplikasi anda siapa yang daftar masuk. Bukan untuk memanggil API. |
| Token akses | 10 minit | 1 hingga 60 minit | Dihantar ke API anda, yang menyemaknya. |
| Token muat semula | 30 hari | 1 hingga 90 hari | Mendapatkan token akses baharu. Berputar pada setiap penggunaan. Memerlukan offline_access. |
| Token akses mesin | 15 minit | 1 hingga 60 minit | Untuk client_credentials: pelayan tanpa orang di sebaliknya. |
| Kod melalui e-mel, pautan ajaib | 10 minit | Tetap | Satu daftar masuk. Kod membenarkan tiga cubaan. |
Sesi dalam Lobby juga mempunyai jangka hayat: sesi tamat selepas 7 hari tanpa digunakan (1 hingga 30), dan selepas 30 hari keseluruhannya (1 hingga 90). Menukar sesuatu yang sensitif, seperti alamat e-mel, memerlukan daftar masuk dalam 10 minit terakhir.
Kunci tandatangan
Token ditandatangani dengan RS256 secara lalai; sesebuah persekitaran boleh menggunakan ES256 atau EdDSA sebaliknya. Kunci awam diterbitkan di jwks_uri persekitaran itu, jadi pustaka anda mengambilnya, dan mengambil kunci baharu apabila kunci diputar.
Skop
| Skop | Apa yang diterima oleh aplikasi anda |
|---|---|
openid | Wajib. Token ID dengan sub orang itu. |
profile | Nama dan gambar mereka. |
email | Alamat e-mel mereka, dan sama ada ia telah disahkan. |
offline_access | Token muat semula, supaya mereka kekal didaftar masuk. |