4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windowsでpython3-samlを使ってSAMLベースSSOを試してみた

Last updated at Posted at 2022-07-19

はじめに

Windows環境で、SAMLベースSSO(シングルサインオン)を試してみました。
SP(サービスプロバイダ)として、Pythonライブラリpython3-samlを使用、
IdP(IDプロバイダ)として、Azure AD(Active Directory)を使用しました。

Azure Active Directory(Azure AD)とは

  • クラウドベースのIDおよびアクセス管理サービス
  • Microsoft 365/Azure portal/その他SaaSアプリ、など外部リソースへのアクセスを支援
  • イントラネットネットワーク上のアプリなど内部リソースと、組織向けクラウドアプリへのアクセスを支援

python3-samlとは

  • SAML認証のPython3ツールキット
  • PythonソフトウェアでSAML認証機能を実装する場合使用

検証開始

Azure ADにアプリを登録し、SAMLベースのSSOをセットアップ

image.png

スクリーンショット 2022-07-19 091643.png

Windows環境にpython3-samlをインストールし、起動

検証環境

  • OS: Windows 10
  • pyenv

python3-samlを入手

git clone https://github.com/onelogin/python3-saml.git

SAML設定

python3-saml\demo-flask\saml\settings.json設定ファイルを編集

{
    "strict": true,
    "debug": true,
    "sp": {
        "entityId": "https://localhost:5000/metadata/",
        "assertionConsumerService": {
            "url": "https://localhost:5000/?acs",
            "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
        },
        "singleLogoutService": {
            "url": "https://localhost:5000/?sls",
            "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
        },
        "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
        "x509cert": "",
        "privateKey": ""
    },
    "idp": {
        "entityId": "<AzureAD EntityID >",
        "singleSignOnService": {
            "url": "<AzureAD SSO Service >",
            "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
        },
        "singleLogoutService": {
            "url": "<AzureAD SingleLogout Service String >",
            "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
        },
        "x509cert": " <AzureAD_X509_String> "
    }
}

Python3.6をインストール

pyenv install 3.6.8
pyenv local 3.6.8
pyenv version
3.6.8

依存ライブラリをインストール

python3-samlのdemo-flaskアプリをSPとして使用します。

cd python3-saml
cd demo-flask
pip install python3-saml
pip install flask==1.1.4

アプリ実行

  • Let's Encryptなどを使用し、SSL証明書を作成

    • fullchain.pemprivkey.pempython3-saml\demo-flaskに配置。
  • アプリ起動

set FLASK_APP=index.py
flask run --host localhost --cert fullchain.pem --key privkey.pem
 * Serving Flask app "index.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on https://localhost:5000/ (Press CTRL+C to quit)

ブラウザからhttps://localhost:5000にアクセス

image.png

Logonボタンをクリックすると、SAMLベースのSSO認証が行われる

スクリーンショット 2022-07-19 091504.png

おわりに

Windows環境で、python3-samlを検証してみました。
SAMLベースSSO検証の一助になれば何よりです。

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?