ウェブサイトのログイン認証を実装します

目的が何であるか、サイトの認証とは何ですか?
一般的に、ウェブサイトは、唯一の操作権限にすることはできません。例えば、操作権限、および管理にログインし、ログインしていないオペレーティング権威があるかもしれ
操作権限や他のメンバー。サイトの目的は、動作中に、元のユーザー認証、ユーザーの身元を特定し、それが運転の特権があったかどうかを判断するためである
プロセスを。

いくつかの方法で、Webサイトの認証
我々は唯一のユーザログインするかどうかを区別するために、すなわち操作する権限を、問題を単純化します。

セッション方法は、
(1)セッションは、認証実装
最初に一意のセッションIDをログインが成功するような、背景が生成されるログインする1>ユーザが、ユーザ情報は、対応するバックグラウンドに格納された
ライト(Redisの、データベース、等)、及びセッションIDクッキーに。
2>次回ブラウザ訪問は、最初のクッキーを決定し、その後、ユーザのログイン動作するかどうかを決定します。
(2)セッションの一貫性
(Redisのは、MySQL、などと)一緒にサーバに格納されたユーザ情報に配置する必要がある、それは機械ログインに表示される、ことがあり
、マシン上のデータを保存するが、で別のサーバへのアクセス要求は、あなたがた場合のために再署名を必要とするとき。

JWTは、具現化
(1)単純な認証プロセスJWT
JWTは、3つの部分に分かれ:ヘッダ(暗号化を含む、等)、ペイロード(必要なユーザ情報を含む、有効期限など)、
署名(二つの部分の最初によって生成されます)。
1>正常にユーザがログインした後に、提供される文字列の文字列を生成し、ユーザ固有のキー値に応じた背景を持つユーザ情報、即ちトークン列、
クッキーに、
2>ユーザトークンの次のアクセスと、システムはまずます場合は、最初の2つの部分と検証のトークンの有効性と正確性のキー値に基づいて
検証が渡され、その後、次のステップ...
(2)認証のタイミングについて考えることは
あなたができる、以下の2つのメソッドを提供しますサイト選択の具体的なニーズに応じて:
1>インターフェイスは認証インターフェース(API)を必要とし、次にインターフェイスAUTHのフィルターを通してない、認証(AUTH)へのインターフェースを含みます
ログインアクセスを統一プロセス、バックログインページへとその論理的な未知のジャンプ。
2>上記のアプローチの1つの問題は、インターフェイスを定義することは不可能であるログインをアクセスすることができるインタフェースがログインしていないときに表示されます。次いで、に従って
界面の方法のみ認証APIとインターフェースに分割することができます。
あなたがアクセスにログインする必要があり、またはインタフェースを定義することができないときに、別の方法は、単にプロセスにフィルタを使用しないことです
認証とアクセストークンを待って、その後、次のロジックが続きます。
(3)トークンの問題を更新し
、一般的に有効なトークン時間は1~2時間に設定され、その後、後に期限切れになった場合は、トークンを再取得するにはログインする必要があります。これを回避するには
、状況を、我々は古いトークンを使用して、限りトークンとして、トークンの設定のために内部のこのリフレッシュ時間で効果的に有効なリフレッシュすることができますアクセスすることが
尋ねる、それは新しいトークンに戻ります。このように、問題が解決することができます。

:OAuth認証は、(サインインアプリケーション)を見て
単純にするために、ユーザを必要とせずに、別のアプリケーション(ISP)リソースを取得するために、アプリケーション(クライアント)を解決するために、置くのOAuth
クライアントが提供するサービスを提供しますこのような問題ビジネスアカウントのパスワード情報。クライアントとサービス・プロバイダーの間で、承認申請の層があり、クライアントが運ぶ
正規サービスプロバイダ層を介してリソースへのアクセストークンを。

OAuth2で、サードパーティのコードがあるQQを達成し、GitHubのは、囲碁の言語を介してログインするために認証を使用するには、サインイン

まとめ
私たちはここにいるが、単にセキュリティのため、実際の開発では、認証に次のいくつかの方法を模索するために、サイトの複雑さは、存在する可能性がある
別のユーザー権限のさまざまなというように、それは可能ですこれは、これらの方法の特定の設計及び変更する必要があります。

オリジナルリンクします。https://blog.csdn.net/leeezm/article/details/80464847

 

 

 

 

I.概要

 どのような着地と認定ですか?彼らは、ユーザーの身元を識別しています。これは、ユーザーを識別特定する方法ですか?または、ユーザーだけが(十分に安全)を知っているが、これは彼自身であると言うことな方法は何ですか?そして、「ユーザ名+パスワード」、モダリティの「ユーザ名+電話番号」があります。以下は、「ユーザ名+パスワード」ログイン認証方式を分析します:

  1. セキュリティ上の理由から、我々はすべてのすべてのリクエストで「ユーザー名+パスワード」を使用することはできません。
  2. 「ユーザー名+パスワードは」最も安全な方法は、あなたが「ユーザ名+パスワード」を使用したい場合は、ユーザーが独自に提供できるようにするために持っていることを、ユーザー自身の心の中に格納され、任意の場所に保存することができません。

 だから我々が行うのですかどのようにそれはそれのためのユーザー名とパスワードを提供することはできませんか?私たちは、ユーザを生成するためにユーザーのID情報に基づいて、ユーザーにログインすると、トークンをマークすることができます。

 認証トークン情報以降で、新たな問題がこのトークンが安全であることを確認する方法ですか?他の人が持っている場合、このトークンは、ユーザーの識別情報を改ざんすることができます。解決策は、トークンがユーザー自身の使用していない特定することである私たちは、次の2つの検証情報が変更されていないか、許容範囲内となっている保証することができれば、我々は通常、次の方法では、我々は、このユーザーがされていることを考えることができます当社発行されたトークンを使用しています。

  1. 位置情報(IP、緯度及び経度)
  2. デバイス情報

 今、私たちは、ユーザーの身元を特定するためにトークン+(場所、デバイス情報を)やったこと。私たちそれぞれの要求は、当社のサービスのパフォーマンスに影響を与えるにバインドされた場合、ユーザーの身元を確認するために、この情報を特定する必要があります。次に、このような決意は、どのようにそれを軽減するには?

  1. ランダムに選択されたサーバタイミングを識別要求または
  2. クライアントは、識別のタイミングを要求します

 最初のアプローチは推奨されません、各ユーザサーバのメンテナンスコンプレックスのタイミングは、ランダムなパフォーマンスの問題は、多数のユーザーが同時に特定されています。それは第二であり、サーバは、トークンリークが時間の間に、情報セキュリティ問題のユーザーを引き起こす可能性があれば、一定の時間に定期的な評価を要求するクライアントを強制し、これは安全係数である必要があり、一度識別クライアント要求のタイミングは、あまりにもすることはできません短すぎ長くなく、基準マイクロチャネルは、7200sは2時間です。

 それでは、どのようにそれの検証を行うために、随時、クライアントを強制しますか?簡単に言えば、我々は効果的な時間にトークンを設定したリフレッシュトークンがあるので、有効期限は、クライアントは、新しいトークンを要求しなければなりません。

第二に、認証モード

 ユーザーがログオンした後、クライアントはサービス要求が認証情報を含まなければならない要求するたびに、サーバーは、その合法性に基づいてユーザ情報と認証情報を照会します。次のように現在の認証情報を指定できます。

1.集中セッションモード

 ログインが完了した後、サーバは、認証トークンとしてランダム認証トークン(一般リクエストの内部に配置され、ヘッダ)をもたらすため、各時間がクライアント要求を省略する返します。トークンにトークンの問合せに対応するエンドユーザサービス情報。

2.トークンの道

 あなたは、サーバーの暗号化は、ユーザー情報とセキュリティトークン(すなわちJWTS、JSONウェブトークン)を生成するために、他の安全係数に応じてログインした後、トークンは、ユーザーのID情報、認証のみで認証トークンの検証が含まれています正当性には、ユーザー情報を復号化するために取ることができます。

3.比較

認証モード 利点 不十分な
中央集中型セッションモード 1.サーバは、ユーザのステータスを管理することができ、ユーザーの状態を維持し、ユーザー情報は、一貫性の障害の問題ではありません。

2.セキュリティは比較的高いです

サーバ1セッションは、ユーザーに関する状態情報がトークンに基づいて、高い性能要件を取得する必要が維持します
トークンの方法 1.クライアントは、ユーザーの状態を記録し、サービスには、集中パフォーマンスの問題が存在しない、ステートレスです。

2.ビジネス切り離され、比較的単純な論理マルチ認証、性能と信頼性技術上のトークンは比較的簡単です

トークン必須または問題を更新する失敗、アップデートが失敗した場合やトークン力は、(ユーザーの禁止など)の追加作業が必要です

2.ユーザー情報が更新されると、ユーザーのトークンで同期の問題

第三に、認証の実装

1.集中セッションモードシーケンスのタイミング

  1. クライアントが未登録の状態でビジネス・サービスを要求し、ゲートウェイはクライアントの必要性を、認証情報を取得通知しないダイレクトリターン401がログに記録されます。
  2. クライアントは、サービスへのアクセスを要求するために「電話番号+パスワード」、「電話番号+コード」のアプローチを使用します。
  3. ゲートウェイは、サービス要求のログイン認証サービスの着陸後に発見されます。
  4. 携帯電話番号の利用者情報を経由してログイン認証サービスの問い合わせ、トークンを生成しながら。
  5. ゲートウェイは、トークンをクライアントにトークン、ゲートウェイを返します。
  6. トークンゲートウェイとクライアントの要求は、ゲートウェイは、ユーザー情報を照会して、ユーザーがビジネス情報サービスに転送されますゲートウェイに戻り、次のビジネスプロセスを完了するために、トークンサービスによってトークン認証サービス、認証を通過します。

2.プロセストークン列

  1. クライアントが未登録の状態でビジネス・サービスを要求し、ゲートウェイはクライアントの必要性を、認証情報を取得通知しないダイレクトリターン401がログに記録されます。
  2. クライアントは、サービスへのアクセスを要求するために「電話番号+パスワード」、「電話番号+コード」のアプローチを使用します。
  3. トークン(JWT情報)を生成している間、ゲートウェイは、サービス要求のログイン認証サービスの着陸後に発見され、トークンがクライアントに返されます。
  4. クライアント要求解読トークンユーザ情報(JWTの情報)に応じてゲートウェイとトークン、およびユーザのビジネスサービスに情報を転送する、ビジネスプロセスは、次を完了します。

第四に、認証技術プログラム

1.中央集中型認証アスペクトセッション

セッションは、次の方法のユーザを認証するための認証を一元化します:

実現 説明 利点 短所
RPCコール RPCコールを経由してゲートウェイ認証サービス、ユーザー情報のトークンを取得 アーキテクチャのロジックは単純で、追加の作業を必要としません。 RTの増加応答
Redisの直読 ゲートウェイ認証サービスは、直接Redisのを読んで、検証し、ユーザー情報を取得します 高性能 ゲートウェイ認証検証はロジック、およびコンフィギュレーション・メンテナンスのRedisを統合する必要があります
nginxのLuaの nginxのでは認証ロジックのluaスクリプトによって達成されました ベストパフォーマンス 1.ゲートウェイの前に、無効な署名認証確認のための要求は、行われる必要があります。

2. nginxの変換、Luaの開発コスト

2.認証トークンの実施形態の態様

トラフィックデータとの要求に解決直接JWTのユーザー情報、およびユーザー情報を取得するはるかに簡単、ゲートウェイ情報を達成する方法の認証トークン。

おすすめ

転載: www.cnblogs.com/huchong-bk/p/11702848.html