コンピューター ウィンドウズ インターネット

モバイルアプリケーションの入り口での1c認証。 Webサーバー操作の呼び出し

、PHP、メッセージングシステム

コミュニティにサービスをご紹介できることをうれしく思います PushAuthこれにより、クライアントはモバイルデバイスでPUSHメッセージを使用してログインできます。



このアイデアは新しいものではなく、多くの企業がすでにこのテクノロジーをアプリケーションで使用しています。 セキュリティ、デバイスとクライアントの管理、互換性、快適な作業などの問題を検討するまで、すべてが十分に単純に見えます。

そのアイデアはどのようにして生まれたのですか?

私たちは多くのサービスを使用しています:電子メール、ソーシャルネットワーク、CRMシステム、アクセス制御システム、クライアントバンクなど。 正しいように、各サービスについて、アクセスするには、次を使用する必要があります ログイン/メールパスワード..。 私たちはすでにそれを結論付けることができます:

  1. 私たちのほとんどすべてがメールアドレスを持っています。
  2. ほとんどの場合、パスワードはどこでも同じです。 (1passwordなどのサードパーティのサービスは使用しないものとします)

2つのポイントに基づいて、私は欲しかった:

  1. この1通のメールを承認に使用してください。
  2. パスワードは一切使用しないでください。

これはどうしたの?

私たちは登録のためのモバイルアプリケーションにいます パスワードは一切使用しないでください..。 はい、別のパスワードを覚えておく必要はありません。 モバイルアプリケーションに登録/承認するには、電子メールのみを入力するだけで十分です。電子メールには、アクションを確認するためのリンクが記載された手紙が届きます。 次の電子メール入力後、登録なしで自動的にアプリケーションに入ります。

承認の種類は何ですか?

現在、利用可能な承認リクエストには主に2つのタイプがあります。

  1. プッシュ質問クライアントが答えを出さなければならない承認のために:はいまたはいいえ。 この方法では、サービスを利用できます ルーティング、それについて少し下。
  2. 安全なプッシュコード、サービスの所有者自身が送信する モバイルアプリ PushAuthサービスを使用するクライアント。
  3. QR認証、これにより、クライアントのモバイルアプリケーションでコードをスキャンし、認証を渡すことができます。 この方法すでにモバイルアプリケーションを使用したクローズドテストの段階にあり、近い将来利用可能になる予定です。

モバイルアプリケーション

  • FireBase Cloud Messagingを使用して、AndroidとiOSでプッシュメッセージを配信します。 モバイルアプリケーションからPushAuthサーバーに転送されるすべてのデータは、HMACSHA-256の個人秘密鍵で署名されています。
  • モバイルアプリケーションは、PINコード(TouchIDパスワード)によってさらに保護されます。これにより、不正アクセスに対するセキュリティのレベルが向上します。
  • モバイルアプリケーションでAPI機能を使用できるようにするSDKを開発する予定です。
  • クライアントは一度に10台のデバイスを持つことができ、PUSH要求を受信できます。 いずれかのデバイスでの応答、他のデバイスでのプッシュへの応答は無視されます。 他のデバイスに返信するときは、プッシュメッセージを非表示にする予定です。


プッシュ質問



安全なプッシュコード


アプリケーションはすでに利用可能です:

バックエンド


サービス所有者の場合、クライアントの承認ステータスに関する詳細な統計が利用可能です。 サービスごとに個別のアプリケーションを作成し、その使用を監視できます。 さらに、認証データを送信するWebフックを構成できます。

  • QRコード
  • プッシュリクエスト
  • 顧客の応答のタイムアウト

どこで使えますか?

CRM

従業員の行動を確認する必要がある同じCRMシステムなどのITサービスで想像力の飛翔を始めましょう。 たとえば、サービスのおかげで ルーティング、文書に署名するために管理者の確認が必要となるようにすることが可能です。 したがって、全体像は次のようになります。

  1. 従業員はアクションを開始し、PUSH要求を受信して​​応答します はい.
  2. 彼の直属の上司はPUSHリクエストを受け取り、応答します はい.
  3. 上位リーダーはPUSHリクエストを受け取り、応答します はい.
  4. すべてのアクションの結果は次のようになります はい

ある段階で誰かが答えたら 番号の場合、次のアップストリームリンクはPUSH要求を受信せず、要求の全体的な結果が応答になります 番号


上記でサービスの運用について説明しました ルーティング優先して。 ただし、このサービスは優先せずにご利用いただけます。 これは、チェーン内のすべてのリンク(従業員)が同時にPUSH要求を受信することを意味します。 そして、それらすべてが肯定的に答えた場合にのみ、全体的なクエリ結果が肯定的になります。

Webサイト

サイトでの2要素認証または単純な1要素認証により、内部リソースへのアクセスを簡素化または保護できます。 たとえば、WordPress管理Webパネルにアクセスするために、請負業者/開発者にアクセスを許可し、プッシュ認証要求によって厳密に制御したい場合です。

OS

SSH / telnetアクセスを使用していますか? または、ラップトップの蓋を開けたときに認証リクエストを受け取りたいですか? そうすれば、このサービスは完璧になります。

エンジニアリングと設備

さらに、モバイルアプリケーションを使用して、産業規模で施設(金庫、エレベーター、回転式改札口、アラーム)へのアクセスを実装できます。

安全


これは、このサービスで最も重要な質問です。 ユーザーサービス間のデータ交換などに注意する価値があります<-->PushAuthサーバー<-->クライアントアプリケーション。
すべてのデータは、HMAC署名、SHA-256アルゴリズムを使用してHTTPS(TLS)経由で転送されます。 サービスの各クライアントとユーザーには、独自の公開鍵と秘密鍵のペアがあります。 この場合の公開鍵は、共有ネットワークストレージでの識別に必要であり、クリアテキストで送信できます。 秘密鍵は安全な方法で送信されます。 モバイルアプリケーションの場合、すべてのキーはAPN / GCMを介してのみ送信されます。 したがって、これらのサービスの証明書のレベルで追加の保護を提供します。

遅かれ早かれ、モバイルアプリケーションの開発者は、どういうわけか各ユーザーを区別したいという願望を持っています-彼の個人的なプロファイルを作成し、彼にアプリケーションを転送する機会を与えます 新しい電話コンテンツを失ったり、単にパーソナライズされた広告を送信したりすることなく。

イントロ

パーソナライズの基本は、ユーザーごとに独自のアカウントです。 しかし、退屈な登録に時間を無駄にしたいと思う人はほとんどいないように配置されています。ユーザーはすでにInstagram、Twitter、Facebookを持っており、新しいアカウントのために頭の中に十分なスペースがない可能性があります。 例のために遠くまで行く必要さえありません-あなたの心を調べてください:)。 あなたがユーザーであると想像してみてください-あなたの一人のために グーグルプレイ便利なアプリケーションは数十ありますが、それぞれに登録する必要はないでしょう。

これがOAuthテクノロジーの登場です。信頼できるサードパーティを使用してサードパーティのリソースでユーザーを承認するためのメカニズムです。 このサービスは非常に人気があります。Instagram、Facebook、およびその他の多くの大規模プロジェクトでは、ユーザーがサードパーティのリソースにすばやくログインできるようになりました。 ぜひご参加ください。今日の小さなプロジェクトでも、OAuthを実装することは理にかなっています。ユーザーはすでにこのメカニズムに慣れています。

優れたプログラマーは、ジュニアとは異なり、少なくとも一般的には自分が何をしているのかを理解しているので、APIを実装する前に、すべてがどのように機能するかを分析しましょう。

OAuthが入ったことに注意してください モバイルデバイスしたがって、Webからは、JavaやAndroidから遠く離れていても、そのような認証メカニズムがどのように機能するかについての情報が役立つ場合があります。

OAuthデバイス

OAuthテクノロジーの出現により、ユーザーの新しいリソースの登録アルゴリズムが劇的に変化しました。 これで、次のクレデンシャルを記憶する必要はありませんが、を使用して数回クリックするだけでサイトに入ることができます。 アカウントソーシャルネットワークの1つ。

ユーザーが本当にアカウントを作成したいAppという小さなアプリケーションを想像してみましょう。 彼は新しいユーザー名とパスワードを思い付くつもりはありませんが、特定のページがあります ソーシャルネットワークそこで彼は、使い慣れたアイコンをクリックして、自分のアカウントでアプリにログインすることにしました。 これにより、承認プロセスが開始されます。このプロセスでは、外見上はすべてがアプリケーション内のように発生しますが、驚くほど多くの関係者が関与します。 プロセス全体は6つのステップに分けることができます。

これがその仕組みです。 スキームはかなり単純化されているので、OAuthの基本的な機能であるこのテクノロジーに注意を向けたいと思います。 認証しませんユーザー。 OAuthは、「ログインとパスワード」のペアの有効性については責任を負いません。さらに、このデータがユーザーによって入力されたという事実についても責任を負いません。 プロセス全体には以下が含まれます 承認のみ-つまり、アプリケーションには、サードパーティのサーバーに保存されているユーザーデータを使用してアクションを実行する権利が付与されます。

同時に、認証もここにあり、ステージ1〜3で発生しますが、OAuthに組み込まれているOpenIDプロトコルを使用して目に見えない形で進行します。 このプロトコルは少し暗号化された魔法を実装しており、その説明にはそのような記事がいくつか必要になるため、今日は触れません。

実装

理論的な部分は終わりました、始めましょう Android Studio..。 OAuthは現在非常に人気があり、プロジェクトのWebサイトには、このテクノロジーをサポートする1​​0を超える大規模なプロジェクトがリストされています。 ご想像のとおり、一般的な動作原理はいずれの場合も同じであり、クラスの名前と認証センターの住所のみが異なります。

継続は参加者のみが利用できます

オプション1.「サイト」コミュニティに参加して、サイト上のすべての資料を読みます

指定された期間中にコミュニティに参加すると、すべてのハッカーの資料にアクセスできるようになり、個人の累積割引が増え、プロのXakepスコアを累積できるようになります。

私たちはあなたに小さな概要を提供します。それは、デザイナー、開発者、そして何よりも製品マネージャーにとって興味深いものになることを願っています。 承認フォームを表示する方がよい場合、表示方法、ユーザーの入力時間を短縮する方法、ソーシャルネットワーク経由でログインするときに忘れてはならないこと、承認を簡単にする方法について説明します。電話経由。

セックスのように:遅いほど良い

ユーザーがアプリケーションをダウンロードして初めて開いた直後に、ユーザーにアプリケーションへのログインまたは登録を強制しますか? これは、アプリケーションがすぐにバスケットに入る可能性が高くなることを意味します。 これは統計によって確認されているので、最初のアドバイスは、本当に必要になるまで承認を置くことです。 これは、注文の送信またはコメントの作成である可能性があります。 ..。

今日広く使用されているアプリケーションに入る主な方法は、ログイン+パスワード、ソーシャルネットワーク、電話+ SMSからのコードです。 これらの方法の最初のものをより詳細に調べてみましょう。

ログイン+パスワード

ユーザーが個人データを入力する必要がある場合、私たちのタスクは、このプロセスをユーザーにとって簡単にすることです。

入力フィールドのヒント

たとえば、単純な形式では、通常のログインとパスワードの入力を使用すると、フィールド名をプレースホルダーに配置できます。これはユーザーにとって非常に明白です。 データ入力に制限がある、より複雑な形式では、ラベルとプレースホルダーを使用する必要があります。たとえば、パスワードの長さの説明などです。 ラベルとプレースホルダーを入力フィールドの上に配置することをお勧めします。そうすれば、ユーザーが何を入力し、どのように入力するかがいつでもわかります。

モバイルアプリケーションでは、入力フィールドと同じ行にラベルを配置することはベストプラクティスではありません。 これは有用な水平方向のスペースを消費します。 たとえば、LamodaiPhone登録フォーム。

このトピックに関する2つの質の高い記事:フォームフィールドのプレースホルダーは有害です。モバイルフォームの使いやすさ:インラインラベルは絶対に使用しないでください。

オートコンプリート

人気のあるドメインの完成。 HotelTonightのiOSライブラリは、人気のあるメールドメインに基づいてメール入力を高速化します。 Androidでは、同じことを手動で行うことができます。 これらすべてが、電子メールの入力を快適にスピードアップします。

人気のメールドメインの完成

Googleアカウントのオートコンプリートメール。 Androidアプリは、デバイス上のGoogleアカウントのリストを取得し、ユーザーにオートコンプリートを提供できます。 これは、たとえばEvernoteやInstagramが行っていることです。 別の方法で行動することもできます。入力フィールドに次のいずれかを自動的に入力します。 メールアドレス..。 ほとんどのユーザーは1つのGoogleアカウントを持っているので、私たちが正しく推測する可能性は十分にあります。 これはFacebookとTwitterが行うことです。 iOSはユーザーの電子メールへのアクセスを許可しないため、このオートコンプリートを行うことはできません。

EvernoteのGoogleアカウントのメールのオートコンプリート

オートコンプリート名。 サーバー側またはアプリケーションで、一般名のベースを保存し、ユーザーにオートコンプリートを提供できます。 Androidでも、Google +が役立ちます。 しかし、これはまだあいまいな方法です。結局のところ、名前の入力には数秒かかり、オートコンプリートはユーザーの気を散らします。

承認中に以前に使用されたログインのオートコンプリート。 公式のTwitterやGmailのように、アプリケーションがアカウントを切り替えない場合は、ログイン時に以前に使用した電子メール/ログインをオートコンプリートすると便利です。 たとえば、Instagramは最後に使用されたログインを表示します。 ただし、セキュリティが重要であるため、この方法は金融アプリケーションには適していません。 ユーザーがアプリケーションからログアウトした場合、誰も彼が使用したログインを知る必要はありません。

自動検出♀♂。 アプリケーションは、入力された名前に基づいて性別を判別できます。 sexize.ioサービスには、200,000以上の名前、79の国、89の言語のデータベースが含まれています。 月額100,000リクエストの費用は9ドルです。 両方のプラットフォーム用のSDKがあります。 Androidでは、性別を取得しようとすることができます Googleアカウント+。 残念ながら、それは常にユーザーによって添付されるわけではなく、ロシアでは一般的にG +はほとんど使用されていません。

住所のオートコンプリートにより、チェックアウトフォームへの入力が高速化されます。このようなフィールドが登録フォームに存在する場合もあります。 問題を解決するサービスの概要がわかります。

パスワード

アプリケーションでパスワードを2回入力することは困難です。 これは一度行うだけで十分であり、入力がエラーで行われた場合、ユーザーはパスワードを変更/回復できるはずです。

ドットで入力するときは、パスワードを非表示にするのが通例です。 「パスワードの表示」ボタンは便利です。ユーザーにパスワードの2回の入力を求めない限り、登録画面では特に重要です。 これは、Runtasticスポーツトラッカーに興味深い方法で実装されています。パスワードが表示され、「目」ボタンが押されます。

パスワードの回復は主要なタスクではありません。 ほとんどのトップアプリは、これを行うためにユーザーをWebページに送ります。 リカバリは、ブラウザで開く個別の画面である必要はありません。簡単なアニメーションを使用してログイン画面に実装できます。 素晴らしい例:Airbnb、Tumblr、Runtastic。

TumblriOSパスワード回復

フィールド、キーボード、オファーを確認する

アプリケーション自体のフィールドへの入力が正しいかどうかを確認することが重要です。 サーバー側の検証には時間がかかり、ユーザーを悩ませます。 このルールは、利用可能なログイン/電子メールのチェックにも適用されます。これはオンザフライで機能するはずです。 良い例は- Yandex Music、Twitter。

すべてのために 他の種類フィールドでは、適切なキーボードタイプ(iOS、Android)を使用することが重要です。 ユーザーがメールを入力する場合は、キーボードに@記号、数字を入力するための数字などが表示されている必要があります。

あなたは誰もその申し出を読んでいないことを知っています。 それとの合意のチェックボックスは冗長だと思います-それはコンテンツからユーザーの気をそらします。 「登録することにより、プライバシーポリシーと利用規約に同意します」というテキストを配置し、目的のリンクを強調するだけで十分です。

ソーシャル ネットワーク

これは、ユーザーがログインするための最も簡単な方法です。ユーザーは、ログインとパスワードを手動で入力する必要はありません。 プラットフォームや国ごとの使用頻度でソーシャルメディアボタンを並べ替えることは合理的です。 Google+はAndroidにとってより便利で、ロシアのほとんどのユーザーはVKなどを持っています。 これは、FoursquareがAndroidで行うことです。

テクノロジーの面では、ユニバーサルoAuthライブラリまたは公式のソーシャルメディアSDKを使用してログインを実装できます。 公式SDKには重要な利点があります。 インストールされているアプリケーションのユーザーアカウントを介して システム設定..。 ユーザーがソーシャルネットワークを介してログインする場合、対応するアプリケーションがインストールされている可能性があります。

公式SDKの仕組み

電話番号と確認コード

Androidでは、SIMカードから番号をオートコンプリートできますが、これはすべてのデバイスで機能するとは限らないため、コードで考慮する必要があります 考えられる間違い..。 実際には、これを行うアプリケーションは見つかりませんでしたが、この方法を使用することはまったく問題ありません。

番号を入力して送信した後、ユーザーはSMSからコードを入力する必要があります。 Androidアプリはこれを自動的に行うことができます。 この手法は、Viber、Telegram、Rocketbankで使用されています。 SMSがまもなく到着することをユーザーに説明することだけが重要です。少し待つ必要があります。

ファブリックディジット。 Twitterには、承認のための無料のすぐに使えるソリューションがあります。 電話番号..。 SMSゲートウェイ+モバイルおよびWebSDKです。 外観特定のフレームワーク内のインターフェースはカスタマイズできます。 これは、すぐに使用できる最も簡単なソリューションです。

ファブリックディジット

結論

ここでは、アプリケーションへのログインとフォームの操作について最近策定したすべての考えの概要を説明しました。 この投稿は一種のチェックリストです。お役に立てば幸いです。 ご不明な点がございましたら、次のようにご記入ください。 [メール保護]