プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • セキュリティ
  • 【セキュリティ】「SSO(シングルサインオン)」、「SAML」とは?
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【セキュリティ】「SSO(シングルサインオン)」、「SAML」とは?

07.19

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

「SSO(シングルサインオン)」とは?

一つのID、パスワードを用いてパスワード認証を行って、複数のWebサービスやクラウドにアクセスすることができる仕組みです。

昨今は、様々なシステムがあるので、都度パスワードを入力する手間がかかったり、他人にハッキングされないようにすることが至上命令になっています。

ユーザーに同じパスワードを使い回すことを助長することになって問題ないの?

ほぼ心配ありません。ユーザー名、パスワードはできるだけ別のものを使うように促されていますが、ほとんどのユーザーが同じユーザー名とパスワードを使いませしているのが現状です。

やはり、人間の記憶力には限界があるので、どうしても異なるIDやパスワードは管理しきれませんし、むしろ色んなIDやパスワードを使う場合は、忘れてしまうのでどこかに記録しなければならなくなり、それがセキュリティホールになったりするのです。一つのユーザー名、パスワードを強固に管理するのが人間の記憶の仕組み上最適というわけですね。

シングルサインオンの歴史

元々、10年以上前からオンプレミス型のシステムにて使われていました。そんなに新しい概念ではないのですね。

昨今は、シングルサインオンもクラウド化されており、「IDaaS(アイダース)」と呼ばれています。

シングルサインオンの種類

  • エージェント方式
  • リバースプロキシ方式
  • 代理認証方式
  • フェデレーション方式

エージェント方式

オンプレミス型のシステムで利用されていますし、現在でも多いです。Webサーバーに認証を代行するモジュールをインストールすることです。

Webに、リクエストをして、Webサーバが受け取り、Webサーバ内の 「エージェント」がSSOサーバに、ユーザーログイン状態/アクセス権限を問い合わせ、認証状態を確認する方式です。

同時アクセス数が、数万人単位の大規模システムでは好まれます。

リバースプロキシ方式

オンプレミス型のシステムで利用されていました。

まずは、ブラウザと、Webアプリの間に「リバースプロキシサーバ」を立てます。

その、リバースプロキシサーバーに対して「エージェントソフト」を導入することで、そのソフトがシングルサインオンの仕組みを代行します。

この方式では、認証サーバーへのアクセスが集中しないように、ロードバランサが必須になってしまいますので、利用者が多い場合はこの方式は避けます。

代理認証方式

IDaaSのシステムでよく利用されています。

Webアプリのログインページに対して、ユーザーの代わりにID/パスワードを送信し、自動的に代理入力することによってログインを済ませます。

Auth0

クラウド型のIDaaSベンダが作っている製品です。コードレスでお手軽に導入でき、様々なサービスとの連携を簡単に行うことが可能です。

Auth0については、詳しくは下記の記事で解説しています。

【Auth0】認証プラットフォーム「Auth0」とは?

フェデレーション方式

IDaaSのシステムでよく利用されています。

クラウドサービス間で、パスワードではなく、「チケット」というものを受け渡しすることによって、シングルサインオンを実現します。

下記のように多くのサービスが対応しています。

  • Office365
  • G Suite
  • Salesforce
  • box

主に使われるプロトコルは下記の二つです。

  • SAML
  • OpenID Connect

デメリット

モバイルアプリやWeb APIにはなかなか対応できないという問題点があります。

一般的なエンタープライズ向け

AD、LDAP認証を行い、CookieやHTTPヘッダーなど認証情報を埋め込むなどして、Webアプリケーションへの認可を行うもの。

デメリット

独自のプロトコルを使用しており、実装が難しく非常に時間がかかってしまいます。

SAMLとは?

「Security Assertion Markup Language」の略です。

異なるネットワークドメイン間で、ユーザー認証を行うためのXMLをベースとした規格で、企業の持つAD等の情報を使って「シングルサインオン」を実現します。

バージョン

バージョン 策定年月
1.0 2002年
2.0 2005年3月

SAMLの特徴

  • ユーザー情報の付与も行うことができ、認証だけでなく、どの機能を使うかという認可まで行うことができます。

SAMLの全体像

SP(要は、あなたがSAMLを導入したいサービス)

SAMLによる認証機能を導入するシステムです。

IdP(Identity Provider)

認証情報を提供するシステムです。

IdPの例としては、下記のようなサービスがあります。

  • Auth0
  • SalesforceのFederation
  • Google AppsのFederation

認証情報

デジタル署名されたXML文書を通じて交換されます。

SAMLがあることによるメリット

SPと、IdP間の連携の際に、情報の形式や書式を変換する手間を省くことができます。

スポンサーリンク
  • 2018 07.19
  • miyabisan2
  • コメントを書く
  • セキュリティ
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 12.04

    【インフラ】The Twelve-Factor App(コンテナのベストプラクティス)、コンテナイメージ、Dockerfile、ECSタスクに対するセキュリティ対策

  2. 2018 03.31

    【Web開発】画面間の情報の受け渡し方法について(hiddenパラメータ、セッション変数、クッキー)

  3. 2020 09.14

    【セキュリティ】「マルウェア」の種類(ウイルス、ワーム、スパイウェア、バックドアなど)

  4. 2021 12.29

    【セキュリティ】「暗号スイート」、「SSLハンドシェイク」について

  5. 2022 01.10

    【セキュリティ】「脆弱性情報の収集」について

  6. 2021 12.28

    【セキュリティ】「メッセージ認証コード(MAC)」、「電子署名との違い」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Auth0】認証プラットフォーム「Auth0」とは?

【Vue.js】コンポーネントの「ライフサイクル」、V…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー