概要
Okta のトライアル期間であれば SAML 認証が試せたので Python アプリを構築して確認してみました
Python は 2 系を使います
(おそらく Python3 では動作しないと思います、自分が試した感じ動作しませんでした)
環境
- macOS 10.13.6
- Okta (2018/08/13 時点)
- Python 2.7.15
Python 用のアプリケーション作成
まずは Okta 側にアプリケーションを登録します
管理者権限のあるユーザでログインし管理画面から「Applications」を開きます
そして「Add Application」を選択します
一覧から選択せずに「Create New App」で作成します
「Sign on method」で SAML 2.0 を選択します
アプリの名前を設定します
今回は「PySAML2 Example」とします
SAML 認証に必要なアプリ側の URL を設定します
今回は
- Single sign on URL・・・
http://localhost:5000/saml/sso/example-okta-com
- Audience Restriction・・・
http://localhost:5000/saml/sso/example-okta-com
とします
また Single sign on URL の「Use this for Recipient URL and Destination URL」にチェックを入れます
同じ画面のすぐ下に Attribute を設定できる画面があるので 3 つ追加します
- FirstName・・・user.firstName
- LastName・・・user.lastName
- Email・・・user.email
アプリがどういったタイプなのか設定します
今回はテストアプリなので「I’m an Okta customer adding an internal app」にチェックしかつ「This is an internal app that we have created」にチェックし内部で使用するアプリである設定にします
これでアプリの作成ができました
Identity Provider metadata というリンクがあり XML が表示されます
この URL をコピーしておきましょう
アプリを追加しただけでは使えません
アプリに対してユーザをアサインすることで対象のユーザで認証できるようになります
「Assignments」->「Assign」->「Assign to People」で追加します
一覧から追加したいユーザを選択してアサインしましょう
アサインが完了するとユーザが一覧に表示されるようになります
このユーザでアプリの認証ができるか確認します
サンプルアプリ構築
今回は Python アプリを構築します
公式が
必要なライブラリのインストール
- brew install libffi libxmlsec1
アプリの設定
- git clone https://github.com/jpf/okta-pysaml2-example.git
- cd okta-pysaml2-example
- vim app.py
59 行目あたりの metadata_url_for
の部分を以下のように書き換えます
事前にコピーしておいた metadata 取得用の URL に変更します
metadata_url_for = {
'example-okta-com': 'https://{yourOktaDomain}/app/a0b1c2deFGHIJKLMNOPQ/sso/saml/metadata'
}
URL の部分はサンプルなので各自の環境に書き換えてください
virtualenv 構築、PySAML2 のインストール
- cd okta-pysaml2-example
- virtualenv venv
- source venv/bin/activate
- pip install -r requirements.txt
アプリ起動
- python app.py
動作確認
localhost:5000
にアクセスしましょう
example-okta-com をクリックすると認証画面が表示されます
Okta に登録してありかつ PySAML2 Example アプリにアサインしてユーザでログインしましょう
成功するとアプリのログイン後の画面が表示されます
最後に
Okta の SAML 認証連携機能を試してみました
今回は Python で試しましたが他の言語でもライブラリが提供されているのでアプリに組み込むことはできると思います
これを使うことで Okta にある ID/PW を使って自分のアプリを認証させることができるようになります
Okta には ActiveDirectory と連携する機能もあるので例えばオンプレの AD サーバの情報を Okta にインポートしてから SAML 連携すれば既存の AD の認証情報を使った認証機構を作成することもできます
要するに Okta が Idp となり認証情報を提供してくれる感じです
クラウド上で認証情報を管理することができるようになるのでオンプレの環境が不要になり管理コストが減るなどのメリットがあるかなと思います
0 件のコメント:
コメントを投稿