https://d226lax1qjow5r.cloudfront.net/blog/blogposts/best-practices-for-implementing-silent-authentication/best-practices_silent-authentication.png

サイレント認証導入のベストプラクティス

最終更新日 May 23, 2023

所要時間:2 分

VerifyV2がリリースされたばかりである。 一般提供開始この記事では、サイレント認証がどのように機能するのか、また、実装に役立つツールやヒントについて説明します!この記事では、サイレント認証がどのように機能するのか、便利なツールや実装のヒントをご紹介します。

サイレント認証の仕組み

Silent AuthenticationはVerify APIのチャネルで、2FAコードなしで認証を完了することができます。ユーザーがログイン認証情報を入力すると、SIM情報をキャリアの記録と照合し、電話番号が有効で本物であることを確認することで、その身元を証明します。リクエストが検証されると、リクエストが期限切れになるか、ユーザーがキャンセルするまで、継続的にユーザーを認証することができます。

要するに、携帯電話のSIM(Subscriber Identity Module:加入者識別モジュール)を使って、ユーザーの入力なしに本人であることを証明する認証方法だ。 ユーザー入力なし.

サイレント認証がどのように機能するかについては、以下の記事をご覧ください。 以前のブログ記事または 開発者向けドキュメントこの記事の残りの部分では、サイレント認証を実装する際に考慮すると便利なヒントや機能について説明します。

モバイルデータ接続の強制

サイレント認証は、ユーザーが携帯電話を持っていることだけでなく、携帯電話ネットワーク接続も必要とする。リクエストがWi-Fi経由で送信された場合、エラーとなります。この問題を解決するため、WiFiを使用していても携帯電話経由でHTTPリクエストを送信できるiOSとAndroidのライブラリを用意しました:

アンドロイド

アンドロイド・ライブラリ AndroidライブラリはGitHubで公開されており、パーミッション、互換性、アプリケーションへのサイレント認証の組み込み方の例に関する情報を得ることができます:

import com.vonage.clientlibrary.VGCellularRequestClient
import com.vonage.clientlibrary.VGCellularRequestParameters

VGCellularRequestClient.initializeSdk(this.applicationContext)
val params = VGCellularRequestClientParameters(
    url = "http://www.vonage.com",
    headers = mapOf("x-my-header" to "My Value") ,
    queryParameters = mapOf("query-param" to "value"),
    maxRedirectCount = 10
)

val response = VGCellularRequestClient.getInstance().startCellularGetRequest(params, false)
if (response.optString("error") != "") {
    // error
} else {
    val status = response.optInt("http_status")
    if (status == 200) {
        // 200 OK
    } else {
        // error
    }
}

iOS

また iOSライブラリはGitHubで公開されており、インストール、互換性、使用例に関する情報を得ることができる:

import VonageClientLibrary

let client = VGCellularRequestClient()
let params = VGCellularRequestParameters(url: "http://www.vonage.com",
                                        headers: ["x-my-header": "My Value"],
                                        queryParameters: ["query-param" : "value"]
                                        maxRedirectCount: 10)
   
let response = try await client.startCellularRequest(params: params, debug: true)
if (response["error"]) != nil {
    // Handle error
} else {
    let status = resp["http_status"] as! Int
    if (status == 200) {
        // Handle response
    } else {
        // Handle error
    }
}

サイレント認証サンドボックス

サイレント認証のテストは難しい。認証の成功をテストするには、モバイル・ネットワーク経由で携帯電話上で動作するアプリケーションからコードを実行する必要があり、そのセットアップは厄介な場合がある。これを助けるために、Vonageはキャリアとのチェックをバイパスするサンドボックスを提供しました。その代わりに、コールバックで返されるデータを使用して、モバイルネットワーク接続の必要性を排除し、自分自身でチェックを完了します。

これを行うには、ワークフローに "sandbox": "true"を追加する:

curl -X POST https://api.nexmo.com/v2/verify \ -H "Content-Type: application/json" \ -H "Authorization: Bearer XXXXX" \ -d '{"brand": "Your Brand", "workflow": [ {"channel": "silent_auth", "to": "447700900002", "sandbox": "true"} }'

これはキャリアをバイパスし、あなたのリクエストをサンドボックスに送る。

サイレント認証サンドボックス サイレント認証サンドボックスの使用に関する完全なガイドはこちらをご覧ください。.

サンドボックスの使用、不使用にかかわらず、あなたの request_idcheck_url:

{
  "request_id": "31eaf23d-b2db-4c42-9d1d-e847e75ab330",
  "check_url": "https://api.nexmo.com/v2/verify/31eaf23d-b2db-4c42-9d1d-e847e75ab330/silent-auth/redirect"
}

続行するには、次のリクエストを送信する必要がある。 GETリクエストを check_url.この結果、いくつかの応答が返されます。 HTTP302その量は、デバイスの場所に基づいてどのキャリア・ルーティングが必要かによって異なります。

HTTP/1.1 302 Found
Location: https://eu.api.silentauth.com/phone_check/v0.2/checks/31eaf23d-b2db-4c42-9d1d-e847e75ab330/redirect
HTTP/1.1 302 Found
Location: https://sandbox.redirect.m-auth.com/callback/sandbox?id=31eaf23d-b2db-4c42-9d1d-e847e75ab330

リダイレクトに従ったら、最後に HTTP200が表示され、最後のステップに進みます。を返します。 codeを返します。 check-codeエンドポイントに送信する必要があります:

{
  "request_id": "31eaf23d-b2db-4c42-9d1d-e847e75ab330",
  "code": "si9sfG"
}

このコードは、他のチャネル経由で配信されたコードを取るのと全く同じように機能します。コードをAPIエンドポイントに送信する:

POST /https://api.nexmo.com/v2/verify/31eaf23d-b2db-4c42-9d1d-e847e75ab330 HTTP/1.1
Content-Type: application/json

{
  "code": "si9sfG"
}

そうすれば、最終的な回答が得られる。成功すれば

HTTP/1.1 200 OK
Content-Type: application/json

{
  "request_id": "31eaf23d-b2db-4c42-9d1d-e847e75ab330",
  "status": "completed"
}

検証に失敗した場合

HTTP/1.1 409 CONFLICT
Content-Type: application/json

{
  "title": "Network error",
  "detail": "The Silent Auth request could not be completed due to formatting or the carrier is not supported."
}

サイレント認証サンドボックス サイレント認証サンドボックスの使用に関する完全なガイドはこちらをご覧ください。.

他のチャンネルへのフォールバック

サイレント認証が機能しない場合がいくつかある:

  • デスクトップ・デバイス

  • ネットワーク圏外

  • 携帯電話ネットワークの代わりにWi-Fi接続を利用する。

このような場合、他のチャネルにフォールバックするオプションがあります。この例では、最初にサイレント認証が試みられます。これが失敗すると、SMSが送信されます:

curl -X POST https://api.nexmo.com/v2/verify \ -H "Content-Type: application/json" \ -H "Authorization: Bearer XXXXX" \ -d '{"brand": "Your Brand", "workflow": [ {"channel": "silent_auth", "to": "447700900002"}, {"channel": "sms", "to": "447700900002"}] }'

ワークフローと ワークフローと利用可能なチャンネルについては、こちらをご覧ください。.

結論

このヒント集がお役に立ち、サイレント認証を使った今後のプロジェクトに役立つことを願っています!あなたは アカウント登録にサインアップして Verify を使い始めることができます。 ツイッター開発者アカウントをフォローして最新情報を入手し 開発者向けドキュメントをご覧ください。

シェア:

https://a.storyblok.com/f/270183/400x400/fa81e51a55/helena-bower.png
Helena Bowerテクニカルライター

ヘレナはVonageのテクニカルライターで、コミュニケーションAPIのドキュメント作成に携わっています。ロンドンを拠点に、ゲームをしたり、レコードを買いすぎたり、劇場でショーを見たりしています。