Auth0.swift:パスワードレス認証

パスワードレス認証は、ユーザーがメールアドレスや電話番号だけでログインできるようにするため、パスワードを覚えておかなければならないという手間を省きます。メールまたはSMSを使ってユーザーにコードを送信するか、コードが含まれるリンクを送信することによって、パスワードレス認証を行うことができます。

パスワードレス認証を使用するには、Auth0.Swiftバージョン1.20.0以上が必要です。

パスワードレスの仕組み

パスワードレスには次の2つの手順が必要です。

  1. コードを要求する

  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にそれぞれ設定されています。