Langsung ke konten
Dokumentasi · Ruang kerja, penerbit, dan token

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
Setiap lingkungan adalah penerbit tersendiri, dengan pengguna, kunci, dan Lobby-nya sendiri.

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:

Penerbit
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

TokenDefaultDapat diatur keKegunaannya
Kode otorisasi5 menitTetapDitukar sekali dengan token. Sekali pakai.
Token ID10 menit1 sampai 60 menitMemberi tahu aplikasi Anda siapa yang masuk. Bukan untuk memanggil API.
Token akses10 menit1 sampai 60 menitDikirim ke API Anda, yang memeriksanya.
Token refresh30 hari1 sampai 90 hariMendapatkan token akses baru. Dirotasi setiap kali dipakai. Memerlukan offline_access.
Token akses mesin15 menit1 sampai 60 menitUntuk client_credentials: server tanpa orang di baliknya.
Kode lewat email, tautan ajaib10 menitTetapSatu 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

CakupanYang diterima aplikasi Anda
openidWajib. Token ID dengan sub orang tersebut.
profileNama dan foto mereka.
emailAlamat email mereka, dan apakah alamat itu sudah diverifikasi.
offline_accessToken refresh, agar mereka tetap masuk.