SSOの基本プロセスは次のとおりです
最初のステップはメインサービスにログインすることです(たとえば、FacebookまたはGoogle)。
新しいサービスにアクセスすると、元の(または親)サービスにリダイレクトして、その1つにログインしているかどうかを確認します。
OTP(1回限りのパスワード)トークンが返されます独自の製品を構築している場合、すべてのコンポーネントが同じ認証を使用することを確認する必要があります。これは、すべてのサービスが独自のコードベースに限定されている場合に簡単です。ただし、Disqusコメントシステムや顧客関係管理のためのFreshdeskなどの人気のあるサービスでは、ゼロから独自のものを作成する代わりに使用することをお勧めします。
しかし、そのようなサードパーティサービスの使用に問題が発生します。コードはそれぞれのサーバーでホストされているため、ユーザーはウェブサイトにログインしている場合でも、サービスに明示的にログインする必要があります。解決策は、前述のように、SSO。の実装です
理想的には、パブリックとプライベートのキーが提供されます。ログインしたユーザー用のトークンを生成し、検証のために公開キーとともにサービスに送信します。確認すると、ユーザーは自動的にサービスにログインします。これをよりよく理解するには、実際の例を使用してみましょうDisqus sso
最初に、プライベートおよびパブリックDisqus APIキーを使用して、ユーザーに記録されたログにremote_auth_s3というキーを生成します。 SSOをDisqus内の無料アドオンとして登録すると、パブリックキーとプライベートキーが提供されます。
ユーザーの情報(ID、ユーザー名、電子メール)をJSONとして認証のためにDisqusに渡します。ページ上のDisqusシステムをレンダリングする際に使用する必要があるメッセージを生成します。それをよりよく理解するために、Pythonで書かれた例を見てみましょう。PHP、Ruby、Pythonなどのいくつかの一般的な言語のコードの例は、GithubのDisqusによって提供されます。
メッセージの生成サンプルPythonコード(GithubでWebサイトでユーザーにサインインするのは次のとおりです。
disqusコメントの初期化
次に、この生成されたトークンを、JavaScriptリクエストでDisqusに公開キーとともに送信します。認証が検証されている場合、生成されたコメントシステムにユーザーがすでにログインしています。問題がある場合は、Disqus開発者Googleグループで支援を求めることができます。
Python/Djangoで開発されたブログのディレクトリであるブログボウルでSSOの実装を見ることができます。 Webサイトにログインしている場合は、Disqusコメントシステムがレンダリングされたらログインする必要があります。この例では、PersonオブジェクトはID(サイト上の各人に一意です)、電子メール、およびpen_nameを保存します。メッセージは、以下に示すように生成されます。
<span>import base64 </span><span>import hashlib </span><span>import hmac </span><span>import simplejson </span><span>import time </span> DISQUS_SECRET_KEY <span>= '123456' </span>DISQUS_PUBLIC_KEY <span>= 'abcdef' </span> <span>def get_disqus_sso(user): </span> <span># create a JSON packet of our data attributes </span> data <span>= simplejson.dumps({ </span> <span>'id': user['id'], </span> <span>'username': user['username'], </span> <span>'email': user['email'], </span> <span>}) </span> <span># encode the data to base64 </span> message <span>= base64.b64encode(data) </span> <span># generate a timestamp for signing the message </span> timestamp <span>= int(time.time()) </span> <span># generate our hmac signature </span> sig <span>= hmac.HMAC(DISQUS_SECRET_KEY, '%s %s' % (message, timestamp), hashlib.sha1).hexdigest() </span> <span># return a script tag to insert the sso message </span> <span>return """<script type="text/javascript"> </span><span> var disqus_config = function() { </span><span> this.page.remote_auth_s3 = "%(message)s %(sig)s %(timestamp)s"; </span><span> this.page.api_key = "%(pub_key)s"; </span><span> } </span><span> </script>""" % dict( </span> message<span>=message, </span> timestamp<span>=timestamp, </span> sig<span>=sig, </span> pub_key<span>=DISQUS_PUBLIC_KEY, </span> <span>)</span>
フロントエンドでは、この変数を印刷してスクリプトを実行するだけです。ライブデモについては、ブログボウルのこの投稿にアクセスして、下部にレンダリングされたコメントを確認できます。当然、ログインしません。
次に、ブログボウルにサインインして、同じ投稿をもう一度アクセスしてください(効果を表示するにはサインインする必要があります)。以下のコメントシステムにログインしていることに注意してください。
ブログボウルが提供するもう1つの興味深い機能は、コンテンツを投稿する際の匿名性です(この投稿のように)。匿名のユーザーとして(Quoraのような)Disqusに関するコメントへの返信をユーザーに投稿してもらいたい状況を考えてください。私たちは簡単な方法を取り、IDに多数を追加しました。ユーザー向けの一意のメールを関連付けるため(ユーザーによる他のコメントと一緒に表示されないように)、一意のメールも生成します。これにより、匿名のコメントが一緒になりますが、他のユーザーによる元のプロフィールや匿名のコメントと組み合わせることはありません。
sso <span>= get_disqus_sso({ </span> <span>'id': person.id, </span> <span>'email': person.user.email, </span> <span>'username': person.pen_name </span><span>})</span>
シングルサインオン(SSO)
に関するよくある質問シングルサインオン(SSO)の主な目的は何ですか?
SSOとMFAはどちらも認証方法ですが、さまざまな目的を果たしています。 SSOは、ユーザーが単一の資格情報セットで複数のアプリケーションにアクセスできるようにすることにより、ログインプロセスを簡素化します。一方、MFAは、アクセスを付与する前にユーザーに2つ以上の形式の識別を提供するようユーザーに要求することによりセキュリティを強化します。 、SSOはモバイルアプリケーションで使用できます。多くのSSOソリューションはモバイルサポートを提供し、ユーザーが単一の資格情報セットでモバイルデバイスで複数のアプリにアクセスできるようにします。ログインプロセスを簡素化することにより、ユーザーエクスペリエンスを向上させます。ユーザーは、1つの資格情報を覚えているだけで、忘れられたパスワードのフラストレーションを減らすだけです。また、ユーザーはさまざまなアプリケーションにアクセスするときに資格情報を繰り返し入力する必要がないため、時間を節約します。 SSOの恩恵を受ける。ヘルスケア、教育、金融、技術などの複数のアプリケーションに大きく依存している業界は、SSOが提供する利便性とセキュリティから特に恩恵を受けることができます。
SSOは、ユーザーが覚えて管理する必要があるパスワードの数を減らすことでセキュリティを強化します。これにより、サイバー攻撃の一般的なターゲットであるパスワードが弱いまたは再利用される可能性が減少します。さらに、多くのSSOソリューションには、ユーザーデータをさらに保護するために、マルチファクター認証や暗号化などの追加のセキュリティ対策が組み込まれています。 >はい、ほとんどのSSOソリューションは既存のシステムと統合できます。ただし、統合プロセスは、特定のSSOソリューションと整備されているシステムによって異なる場合があります。スムーズで安全な統合を確保するために、経験豊富なITチームまたはSSOプロバイダーと協力することが重要です。
以上がシングルサインオン(SSO)が説明しましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。