Bitwarden seaskwess.dev adalah perangkat perangkat lunak yang membantu pengembang membangun fitur FIDO2 Webauthn Passkeys untuk aliran otentikasi yang mulus.
Menggunakan kata -kata sandi. Tim di belakang Bitwarden akan mengurusnya untuk Anda.
Proyek passwordless-server berisi API, database, dan item infrastruktur inti lainnya yang diperlukan untuk backend semua klien tanpa kata sandi.
Anda dapat mencoba aplikasi web demo, ditenagai oleh kata sandi tanpa kata sandi di demo.passwordless.dev. Anda juga dapat menonton video di bawah ini:
Untuk mulai menggunakan kata sandi tanpa kata sandi.
Anda dapat menggunakan kata sandi tanpa hubungan dengan berbagai platform backend yang berbeda - lihat dokumentasi untuk info lebih lanjut. Di bawah ini adalah contoh integrasi backend menggunakan ASP.NET Core dan SDK tanpa kata sandi untuk .net:
// Add Passwordless to your service container
services . AddPasswordlessSdk ( options =>
{
options . ApiSecret = "your_api_secret" ;
} ) ;
// ...
// Define the /register endpoint
app . MapGet ( "/register" , async ( IPasswordlessClient passwordless , string alias ) =>
{
// Get existing user ID from session or create a new user in your database
var userId = Guid . NewGuid ( ) . ToString ( ) ;
// Provide the userid and an alias to link to this user
var payload = new RegisterOptions ( userId , alias )
{
// Optional: Link this user ID to an alias (e.g. email)
Aliases = [ alias ]
} ;
try
{
var tokenRegistration = await passwordless . CreateRegisterTokenAsync ( payload ) ;
// Return this token to the frontend
return Ok ( tokenRegistration ) ;
}
catch ( PasswordlessApiException e )
{
return new JsonResult ( e . Details )
{
StatusCode = ( int ? ) e . StatusCode ,
} ;
}
} ) ;
// Define the /signin endpoint
app . MapGet ( "/signin" , async ( IPasswordlessClient passwordless , string token ) =>
{
try
{
var verifiedUser = await passwordless . VerifyTokenAsync ( token ) ;
// Sign the user in, set a cookie, etc
return Ok ( verifiedUser ) ;
}
catch ( PasswordlessApiException e )
{
return new JsonResult ( e . Details )
{
StatusCode = ( int ? ) e . StatusCode
} ;
}
} ) ;Selesaikan pengaturan pendaftaran Anda dan arus tandatangan dengan menggunakan klien tanpa kata sandi di frontend Anda. Kami juga menyediakan integrasi pihak pertama untuk beberapa kerangka kerja frontend juga-lihat dokumentasi untuk info lebih lanjut. Di bawah ini adalah contoh sederhana menggunakan vanilla javascript:
Instal :
$ npm install @passwordlessdev/passwordless-clientTitik akhir pendaftaran :
import Passwordless from '@passwordlessdev/passwordless-client' ;
// Instantiate a passwordless client using your API public key.
const p = new Passwordless . Client ( {
apiKey : "myapplication:public:4364b1a49a404b38b843fe3697b803c8"
} ) ;
// Fetch the registration token from the backend.
const backendUrl = "https://localhost:8002" ;
const registerToken = await fetch ( backendUrl + "/register?userId" + userId ) . then ( r => r . json ( ) ) ;
// Register the token with the end-user's device.
const { token , error } = await p . register ( registerToken ) ;Titik Akhir Signin :
import Passwordless from '@passwordlessdev/passwordless-client' ;
// Instantiate a passwordless client using your API public key.
const p = new Passwordless . Client ( {
apiKey : 'myapplication:public:4364b1a49a404b38b843fe3697b803c8'
} ) ;
// Generate an authentication token for the user.
// Option 1: Enable browsers to suggest passkeys for any input that has autofill="webauthn" (only works with discoverable passkeys).
const { token , error } = await p . signinWithAutofill ( ) ;
// Option 2: Enables browsers to suggest passkeys by opening a UI prompt (only works with discoverable passkeys).
const { token , error } = await p . signinWithDiscoverable ( ) ;
// Option 3: Use an alias specified by the user.
const email = '[email protected]' ;
const { token , error } = await p . signinWithAlias ( email ) ;
// Option 4: Use a userId if already known, for example if the user is re-authenticating.
const userId = '107fb578-9559-4540-a0e2-f82ad78852f7' ;
const { token , error } = await p . signinWithId ( userId ) ;
if ( error ) {
console . error ( error ) ;
// { errorCode: "unknown_credential", "title": "That credential is not registered with this website", "details": "..."}
}
// Call your backend to verify the token.
const backendUrl = 'https://localhost:8002' ; // Your backend
const verifiedUser = await fetch ( backendUrl + '/signin?token=' + token ) . then ( ( r ) => r . json ( ) ) ;
if ( verifiedUser . success === true ) {
// If successful, proceed!
// verifiedUser.userId = "107fb578-9559-4540-a0e2-f82ad78852f7";
} Kami menyambut kontribusi kode! Harap lakukan permintaan tarik apa pun terhadap cabang main . Semua perubahan membutuhkan tes yang membuktikan perilaku yang dimaksud. Harap dicatat bahwa perubahan kode besar dan unit pekerjaan lebih kecil kemungkinannya untuk digabungkan karena beban ulasan.
Audit dan umpan balik keamanan dipersilakan. Harap buka masalah atau email kami secara pribadi jika laporan itu bersifat sensitif. Anda dapat membaca Kebijakan Keamanan kami di file Security.md. Kami juga menjalankan program di Hackerone.
Tidak ada pemberian hak apa pun dalam merek dagang, tanda layanan, atau logo bitwarden yang dibuat (kecuali sebagaimana diperlukan untuk mematuhi persyaratan pemberitahuan sebagaimana berlaku), dan penggunaan merek dagang Bitwarden harus mematuhi pedoman merek dagang Bitwarden.
Lihat Contributing.md
Lihat Direktori Pemberi Tuan Mandiri untuk Instruksi tentang Cara Menghosting Sendiri Tanpa Kata Sandi.dev.
Jika Anda memerlukan dukungan dari tim tanpa kata sandi.