ホームページ > バックエンド開発 > Python チュートリアル > シングルサインオン(SSO)が説明しました

シングルサインオン(SSO)が説明しました

Jennifer Aniston
リリース: 2025-02-25 08:32:09
オリジナル
315 人が閲覧しました

シングルサインオン(SSO)が説明しました

キーテイクアウト

  • シングルサインオン(SSO)は、ユーザーがアイデンティティを1回だけ認証した後に複数のサービスにアクセスできるようにするプロセスであり、パスワードまたは他のシステムを介してアイデンティティを繰り返し確認する必要性を排除します。 SSOの実装は、他のサービスと対話する製品を開発する場合、またはサードパーティサービスを使用する場合、ユーザーが各サービスに個別にログインする必要がないことを保証する場合に有益です。
  • SSOプロセスはサービスによってわずかに異なりますが、基本的なアイデアは同じままです。トークンを生成して検証します。 SSOに関連するリスクを軽減するために、マルチファクター認証や定期的なパスワードの更新などの強力なセキュリティ対策を実装する必要があります。
  • 大衆向けの製品を開発している場合、他のサービスと対話しない完全にスタンドアロンの製品を思いつくことは非常にまれです。サードパーティサービスを使用する場合、ユーザーを認証するために異なるメカニズムが整っているため、ユーザー認証は比較的難しいタスクです。この問題を解決する1つの方法は、シングルサインオンまたはSSOを使用することです。
  • シングルサインオン(SSO)は、ユーザー認証(つまり、ログイン)を1回だけ通過した後、ユーザーが複数のサービスにアクセスできるようにするプロセスです。これには、プライマリサービスにログインした後、ユーザーが許可を与えたすべてのサービスへの認証が含まれます。他の利点の中でも、SSOは、パスワードやその他の認証システムを介して何度も何度もアイデンティティを確認するという単調なタスクを回避します。
  • SSOを詳細に見てみましょう。非常に有名なサービスを使用して、その用途と利点を実証します。
認証プロセス

SSOの基本プロセスは次のとおりです

最初のステップはメインサービスにログインすることです(たとえば、FacebookまたはGoogle)。

新しいサービスにアクセスすると、元の(または親)サービスにリダイレクトして、その1つにログインしているかどうかを確認します。

OTP(1回限りのパスワード)トークンが返されます

OTPトークンは、親のサーバーからの新しいサービスによって検証されます。

SSOの使用の良い例は、Googleのサービスにあります。 YouTube、Gmail、Google、Googleアナリティクスなどのさまざまなサービスにアクセスするには、1つの主要なGoogleアカウントに署名するだけです。あなた自身の製品のための

sso

独自の製品を構築している場合、すべてのコンポーネントが同じ認証を使用することを確認する必要があります。これは、すべてのサービスが独自のコードベースに限定されている場合に簡単です。ただし、Disqusコメントシステムや顧客関係管理のためのFreshdeskなどの人気のあるサービスでは、ゼロから独自のものを作成する代わりに使用することをお勧めします。

しかし、そのようなサードパーティサービスの使用に問題が発生します。コードはそれぞれのサーバーでホストされているため、ユーザーはウェブサイトにログインしている場合でも、サービスに明示的にログインする必要があります。解決策は、前述のように、SSO。

の実装です

理想的には、パブリックとプライベートのキーが提供されます。ログインしたユーザー用のトークンを生成し、検証のために公開キーとともにサービスに送信します。確認すると、ユーザーは自動的にサービスにログインします。これをよりよく理解するには、実際の例を使用してみましょう

Disqus sso

Disqusは、ウェブサイトの人気のあるコメントホスティングサービスであり、ソーシャルネットワーク統合、緩和ツール、分析、さらにはコメントをエクスポートする機能などの機能をたくさん提供します。それはYcombinatorのスタートアップとして始まり、世界で最も人気のあるウェブサイトの1つに成長しました!

Disqusコメントシステムがページに組み込まれているため、ユーザーがWebサイトにすでにログインしている場合、ユーザーがDisqus内で2回目のログインをする必要がないことが重要です。 Disqusには、SSOを統合する方法に関する広範なドキュメントを含むAPIがあります。

最初に、プライベートおよびパブリック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>
ログイン後にコピー

フロントエンドでは、この変数を印刷してスクリプトを実行するだけです。ライブデモについては、ブログボウルのこの投稿にアクセスして、下部にレンダリングされたコメントを確認できます。当然、ログインしません。

シングルサインオン(SSO)が説明しました

次に、ブログボウルにサインインして、同じ投稿をもう一度アクセスしてください(効果を表示するにはサインインする必要があります)。以下のコメントシステムにログインしていることに注意してください。

シングルサインオン(SSO)が説明しました

ブログボウルが提供するもう1つの興味深い機能は、コンテンツを投稿する際の匿名性です(この投稿のように)。匿名のユーザーとして(Quoraのような)Disqusに関するコメントへの返信をユーザーに投稿してもらいたい状況を考えてください。私たちは簡単な方法を取り、IDに多数を追加しました。ユーザー向けの一意のメールを関連付けるため(ユーザーによる他のコメントと一緒に表示されないように)、一意のメールも生成します。これにより、匿名のコメントが一緒になりますが、他のユーザーによる元のプロフィールや匿名のコメントと組み合わせることはありません。

シングルサインオン(SSO)が説明しました

そして、ここにコードがあります:

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と共有する独自の経験がある場合は、お気軽にコメントしてください。

シングルサインオン(SSO)

に関するよくある質問

シングルサインオン(SSO)の主な目的は何ですか?

シングルサインオン(SSO)の主な目的は、ユーザーが複数のアプリケーションまたはWebサイトにアクセスできるようにすることでユーザー認証プロセスを簡素化することです。ログイン資格情報の単一セットを使用します。これにより、複数のユーザー名とパスワードを覚える必要性がなくなり、ユーザーの利便性と生産性が向上します。また、SSOは、パスワードの不適切な管理と不正アクセスの可能性を減らすことにより、セキュリティを改善します。

単一のサインオン(SSO)は、複数のアプリケーションまたはWebサイトの間に信頼できる関係を確立することにより、どのように機能しますか?ユーザーが1つのアプリケーションにログインすると、SSOシステムはユーザーの資格情報を認証し、セキュリティトークンを発行します。このトークンは、SSOシステム内の他のアプリケーションのユーザーを認証するために使用され、複数のログインの必要性を排除します。 SSOにはいくつかの利点があります。複数のログインの必要性を減らすことにより、ユーザーエクスペリエンスを簡素化し、それにより時間を節約し、フラストレーションを減らします。また、パスワード関連の侵害のリスクを最小限に抑えることにより、セキュリティを強化します。さらに、パスワードリセット要求の数を減らすことでITコストを削減できます。潜在的なリスクがあります。ユーザーのSSO資格情報が侵害された場合、攻撃者はそれらの資格情報にリンクされたすべてのアプリケーションにアクセスできます。したがって、これらのリスクを軽減するには、マルチファクター認証や定期的なパスワードの更新などの強力なセキュリティ対策を実装することが重要です。 MFA)?

SSOとMFAはどちらも認証方法ですが、さまざまな目的を果たしています。 SSOは、ユーザーが単一の資格情報セットで複数のアプリケーションにアクセスできるようにすることにより、ログインプロセスを簡素化します。一方、MFAは、アクセスを付与する前にユーザーに2つ以上の形式の識別を提供するようユーザーに要求することによりセキュリティを強化します。 、SSOはモバイルアプリケーションで使用できます。多くのSSOソリューションはモバイルサポートを提供し、ユーザーが単一の資格情報セットでモバイルデバイスで複数のアプリにアクセスできるようにします。ログインプロセスを簡素化することにより、ユーザーエクスペリエンスを向上させます。ユーザーは、1つの資格情報を覚えているだけで、忘れられたパスワードのフラストレーションを減らすだけです。また、ユーザーはさまざまなアプリケーションにアクセスするときに資格情報を繰り返し入力する必要がないため、時間を節約します。 SSOの恩恵を受ける。ヘルスケア、教育、金融、技術などの複数のアプリケーションに大きく依存している業界は、SSOが提供する利便性とセキュリティから特に恩恵を受けることができます。

シングルサインオン(SSO)は、セキュリティをどのように強化しますか?

SSOは、ユーザーが覚えて管理する必要があるパスワードの数を減らすことでセキュリティを強化します。これにより、サイバー攻撃の一般的なターゲットであるパスワードが弱いまたは再利用される可能性が減少します。さらに、多くのSSOソリューションには、ユーザーデータをさらに保護するために、マルチファクター認証や暗号化などの追加のセキュリティ対策が組み込まれています。 >はい、ほとんどのSSOソリューションは既存のシステムと統合できます。ただし、統合プロセスは、特定のSSOソリューションと整備されているシステムによって異なる場合があります。スムーズで安全な統合を確保するために、経験豊富なITチームまたはSSOプロバイダーと協力することが重要です。

以上がシングルサインオン(SSO)が説明しましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート