Auth0.swift:パスワードレス認証
パスワードレス認証は、ユーザーがメールアドレスや電話番号だけでログインできるようにするため、パスワードを覚えておかなければならないという手間を省きます。メールまたはSMSを使ってユーザーにコードを送信するか、コードが含まれるリンクを送信することによって、パスワードレス認証を行うことができます。
パスワードレス認証を使用するには、Auth0.Swiftバージョン1.20.0
以上が必要です。
パスワードレスの仕組み
パスワードレスには次の2つの手順が必要です。
コードを要求する
コードを入力する
リンクを使用する場合でも手順は同じですが、ユーザーが自分でコードを入力する必要がないという点で異なります。コードはURLに含まれています。
手順1:コードを要求する
この例では、ユーザーの接続タイプとメールでstartPasswordless
を呼び出して、コードを要求します。type
パラメーターにはデフォルトのCode
を指定します。成功時には、コードが送信されたことをユーザーに知らせるメッセージを表示したり、コードを入力する画面にユーザーを導いたりするといいかもしれません。
Auth0
.authentication()
.startPasswordless(email: "support@auth0.com")
.start { result in
switch result {
case .success:
print("Sent OTP to support@auth0.com!")
case .failure(let error):
print(error)
}
}
Was this helpful?
手順2:コードを入力する
ユーザーがコードを受け取ったら、入力することができます。login
メソッドを呼び出して、ユーザーのメール、受け取ったコード、該当する接続の名前を渡します。成功すると、応答で資格情報オブジェクトが返されます。
Auth0
.authentication()
.login(
email: "support@auth0.com",
code: "123456",
audience: "https://myapi.com/api",
scope: "openid email")
.start { result in
switch result {
case .success(let credentials):
print("Access Token: \(credentials.accessToken)")
case .failure(let error):
print(error)
}
}
Was this helpful?
SMSを使用した場合には、以下のように、類似した呼び出しになります。
Auth0
.authentication()
.login(
phoneNumber: "+4591131761367",
code: "123456",
audience: "https://myapi.com/api",
scope: "openid email")
.start { result in
switch result {
case .success(let credentials):
print("Access Token: \(credentials.accessToken)")
case .failure(let error):
print(error)
}
}
Was this helpful?
パスワードレスパラメーター
パスワードレス認証はさまざまな各種のパラメーターを使って開始できます。
例:
.startPasswordless(email:String, type:String, connection:String)
または
.startPasswordless(phoneNumber:String, type:String, connection:String)
パラメーター | 必須 | 説明 |
---|---|---|
email |
必須 | (文字列)使用するメールに応じて、email またはphoneNumber が必要です(どちらか1つ)。 |
phoneNumber |
必須 | (文字列)使用するメールに応じて、email またはphoneNumber が必要です(どちらか1つ)。 |
type |
任意 | (文字列)使用するパスワードレストランザクションのタイプ(.Code または.iOSLink )。デフォルトでは.Code に設定されています。 |
connection |
任意 | (文字列)パスワードレス認証に使用する接続の名前。デフォルトでは、SMSのオーバーロードではsms 、メールのオーバーロードではemail にそれぞれ設定されています。 |