2018年8月17日金曜日

Onelogin を試してみた

概要

Onelogin は Onelogin 社が提供する IDaaS (Identity as a Service) です
フリートライアルであれば無料で使えるので試してみました
登録方法から紹介します

環境

  • macOS 10.13.6
  • Onelogin (2018/08/09 時点)

フリートライアルで登録する

このページから登録しましょう
必要な情報を入力して登録します
フリートライアル中は使える機能が制限されています
onelogin1.png

登録するのに「企業ドメインのメールアドレス」が必要になります
要するに @gmail.com などは使えません
試しにやってみましたがエラーになりました
おそらく簡単なチェックしかしていないので自分はメールサーバを立てて自分のドメインを割り当てて、そのメールアドレスで登録しました
おそらくここが一番の難関かもしれません

すぐに管理者のパスワードを設定する画面になるのでパスワードを設定しましょう

パスワードの設定が完了しログインすると以下のような画面になります
onelogin2.png

Onelogin 用の ChromeExtension をインストールする

「INSTALL ON CHROME」を選択して素直にインストールしましょう
onelogin3.png

アプリを登録する

次にアプリをインストールしてみましょう
Onelogin の場合アプリを登録するのは対象のサイトに行くだけで OK です
onelogin4.png

今回は Twitter アプリをインストールしてみます
ブラウザでそのまま Twitter のサイトに行ってログインしましょう
すると Onelogin のエクステンションが反応してアプリを追加するかダイアログが表示されます
onelogin5.png

個人かドメインどちらにアプリをインストールするか聞かれるので今回はドメインに対してインストールしました
ドメインに対してインストールするとドメインに属するすべてのユーザがアプリを使えるようになります
onelogin6.png

ユーザを追加する

最後にユーザを追加します
ユーザの追加は ActiveDirectory などの IDP からインストールすることができます
また手動で追加することもできます
onelogin7.png

ActiveDirectory 連携はトライアル期間では使用できませんでした
onelogin8.png

今回は手動で 1 人追加してみました
同一企業ドメインでのメールアドレスが必要になるので作成しましょう
onelogin9.png

メールアドレスや企業名、マネージャなどは不要でした
あとは「MORE ACTIONS」から「Send Invitation」を選択しましょう
すると招待メールが届くはずです
onelogin10.png

メールに記載のアドレスにアクセスするとパスワードの設定画面になるので設定しましょう
onelogin11.png

これで新規ユーザの登録は完了です
ログイン画面が出るのでログインできるか確認しましょう
ログインできれば新規ユーザのアプリ一覧が表示されます
onelogin12.png

まだ何もアプリがない場合はアプリを使えるようにアプリに対してユーザを追加する必要があります
ユーザをアプリが使えるように追加する手順は次に紹介します

ユーザにアプリを追加する

スコープをドメインレベルで追加したアプリはユーザを追加することで使えるようになります
「Users」->「All Users」でユーザの一覧を表示します
そしてアプリを追加するユーザを選択します
ユーザの設定画面から「Applications」を選択します
onelogin13.png

「+」ボタンを押すとドメインに登録したアプリの一覧がプルダウンから選択できます
今回は先ほど登録した Twitter アプリを選択し「CONTINUE」します
すると Twitter の認証情報を登録する画面になります
今回はユーザに認証情報を登録させたいので何も入力せずに次に進みます
onelogin15.png

これでユーザ側のポータル画面を見ると先ほどなかったアプリが追加されているのが確認できると思います
onelogin16.png

これでユーザがアプリを選択すると先ほど設定していなかった ID/PW を設定することができます

オプション機能

https://www.onelogin.com/product/pricing

今回はトライアルなので基本的な機能しか使えません
onelogin18.png

UNLIMITED (月ユーザ一人あたり 8 ドルのプラン) に申し込めばすべての機能が使えるようになります
onelogin17.png

例えば SAML 認証と連携したい場合は「Custom Connectors」が使えないとダメです
なので最低でも「Enterprise」プランの申込みが必要です

OpenID Connect のエンドポイントもあるようでこれであればトライアルプランでも使えるかもしれません

最後に

Onelogin のトライアルを試してみました
基本的な操作はブラウザエクステンションを導入して各サイトの ID/PW をガンガン記憶されていく感じです
ユーザの追加などはトライアルだと手動でやるしかありません

機能は IDaaS の中でもかなり豊富な方だと思います
が、使用するには有料のプランに申し込む必要があるので個人用途の検証レベルだと厳しいかなと思います
1 ヶ月だけということであればまぁ何とかなるかなと思います

UI はかなり操作しやすかったです
インタフェースは UI 以外に API もあるので自動化もできると思います

参考サイト

2018年8月16日木曜日

Python で Okta の SAML 認証が動作するサンプルアプリを作成してみた

概要

Okta のトライアル期間であれば SAML 認証が試せたので Python アプリを構築して確認してみました
Python は 2 系を使います
(おそらく Python3 では動作しないと思います、自分が試した感じ動作しませんでした)

環境

  • macOS 10.13.6
  • Okta (2018/08/13 時点)
  • Python 2.7.15

Python 用のアプリケーション作成

まずは Okta 側にアプリケーションを登録します
管理者権限のあるユーザでログインし管理画面から「Applications」を開きます
そして「Add Application」を選択します
okta_python_app_saml4.png

一覧から選択せずに「Create New App」で作成します
okta_python_app_saml5.png

「Sign on method」で SAML 2.0 を選択します
okta_python_app_saml6.png

アプリの名前を設定します
今回は「PySAML2 Example」とします
okta_python_app_saml7.png

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」にチェックを入れます
okta_python_app_saml8.png

同じ画面のすぐ下に Attribute を設定できる画面があるので 3 つ追加します

  • FirstName・・・user.firstName
  • LastName・・・user.lastName
  • Email・・・user.email

okta_python_app_saml9.png

アプリがどういったタイプなのか設定します
今回はテストアプリなので「I’m an Okta customer adding an internal app」にチェックしかつ「This is an internal app that we have created」にチェックし内部で使用するアプリである設定にします
okta_python_app_saml10.png

これでアプリの作成ができました
Identity Provider metadata というリンクがあり XML が表示されます
この URL をコピーしておきましょう
okta_python_app_saml11.png

アプリを追加しただけでは使えません
アプリに対してユーザをアサインすることで対象のユーザで認証できるようになります
「Assignments」->「Assign」->「Assign to People」で追加します
okta_python_app_saml12.png

一覧から追加したいユーザを選択してアサインしましょう
okta_python_app_saml13.png

アサインが完了するとユーザが一覧に表示されるようになります
このユーザでアプリの認証ができるか確認します
okta_python_app_saml14.png

サンプルアプリ構築

今回は Python アプリを構築します
公式が

必要なライブラリのインストール

  • brew install libffi libxmlsec1

アプリの設定

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_python_app_saml1.png

Okta に登録してありかつ PySAML2 Example アプリにアサインしてユーザでログインしましょう
okta_python_app_saml2.png

成功するとアプリのログイン後の画面が表示されます
okta_python_app_saml3.png

最後に

Okta の SAML 認証連携機能を試してみました
今回は Python で試しましたが他の言語でもライブラリが提供されているのでアプリに組み込むことはできると思います

これを使うことで Okta にある ID/PW を使って自分のアプリを認証させることができるようになります
Okta には ActiveDirectory と連携する機能もあるので例えばオンプレの AD サーバの情報を Okta にインポートしてから SAML 連携すれば既存の AD の認証情報を使った認証機構を作成することもできます

要するに Okta が Idp となり認証情報を提供してくれる感じです
クラウド上で認証情報を管理することができるようになるのでオンプレの環境が不要になり管理コストが減るなどのメリットがあるかなと思います

参考サイト

2018年8月15日水曜日

Okta で AD 連携を試してみた

概要

オンプレもしくは既存の ActiveDirectory 連携を Okta に連携することができます
今回はその手順を紹介します

環境

  • macOS 10.13.6
  • Okta (2018/08/10 時点)
  • Active Directory (Windows Server 2012 R2)

事前作業

申し込みなどは済ませておいてください
また AD サーバの構築も完了しているものとします

エージェントのインストール

https://your-domain-name-admin.okta.com/admin/app/active_directory/setup/_new_
ここからエージェントをダウンロードします
okta_ad1.png

執筆時点では OktaADAgentSetup-3.4.13.exe というバージョンのインストーラがダウンロードできました

Okta 側はインストールするまで待ち状態になるの Windows 側でインストールを進めます
okta_ad2.png

インストーラを起動します
インストーラを起動する時は右クリックから管理者権限で実行してください
okta_ad3.png

インストールパスを設定します
基本はこのままで OK です
okta_ad4.png

インストールが完了するまで待ちましょう
okta_ad5.png

AD のドメインを設定します
AD サーバが構築されている環境であれば自動で入力されるはずです
okta_ad7.png

エージェント用のアカウントを登録します
特になければ recommended を選択します
okta_ad6.png

エージェントアカウントのパスワードを設定します
おそらくですがここは AD のパスワードポリシーが適用されています
なので複雑なパスワードでないとエラーになるので注意してください
okta_ad8.png

エージェントが Okta に接続するのにプロキシが必要であれば設定します
今回はプロキシがないのでそのままにします
okta_ad9.png

エージェントに Okta の企業ドメインを設定します
事前に登録したものを入力してください
okta_ad10.png

エージェントから Okta への接続確認をします
okta_ad11.png

成功するとログイン画面が表示されます
ログインするユーザは冒頭で指定のあった me ユーザを使います
Okta にログインするための ID/PW でログインしましょう
okta_ad12.png

エージェントに権限を与えるかの確認ダイアログが出ます
「Allow Access」を選択しましょう
okta_ad13.png

これでインストールが完了します
okta_ad14.png

Okta 側の管理画面に戻ると AD サーバで問題なくエージェントが起動している旨が表示されています
okta_ad15.png

Okta 側で AD 連携の基本設定

まずは OU の設定です
Users と Groups の OU を設定します
これも基本はそのままで OK です
okta_ad16.png

設定が完了するとダイアログが表示されます
okta_ad17.png

AD から Okta へ取り込むプロファイルを選択します
かなりの量がありますがデフォルトで Okta が選択してくれているので今回はそのままいきます
okta_ad18.png

これでエージェント連携は完了です
okta_ad19.png

ユーザをインポートする

まだ AD -> Okta のインポートは行われていません
連携した AD の「Import」タブを選択します
そこから「Import Now」することでユーザをインポートできます
okta_ad20.png

インポートのタイプを選択します
今回は「Increment Import」を選択します
Adminirator などはインポートされないので事前に一般ユーザを AD 上に作成しておきましょう
okta_ad21.png

インポートの結果が表示されます
okta_ad22.png

インポートされたユーザはまだ Okta に登録されません
インポートされたユーザの一覧からユーザをどうするか選択します
「New」「EXISTING」「IGNORE」があります
今回はインポートされたユーザを登録するので「New」を選択します
そして「Confirm Assignments」を選択し Okta にインポートします
okta_ad23.png

確認画面が表示されます
今回はメールアドレスを送信してアクティベートするのではなくインポートしたらアクティベート状態にします
okta_ad24.png

動作確認

https://your-domain-name-admin.okta.com/ にアクセスして先ほど AD から登録したユーザで Okta にログインできるか確認してみましょう
okta_ad25.png

AD に登録した際のパスワードでログインできれば連携完了です
当然ですが SSO なのですでにブラウザでログインしている場合はログイン画面が表示されずにログイン後の画面に遷移します

最後に

Okta で ActiveDirectory に登録したユーザ情報を Okta に連携する方法を紹介しました
ActiveDirectory サーバがすでにある場合はエージェントをインストールするだけなのでかなり簡単にインポートできると思います

インポートするまでの手順がかなり丁寧なのでやることは多いですがポチポチ作業が多いのでそこまで大変ではないかなと思います

ハマるポイントがあるとすれば Windows サーバにエージェントをインストールするところだと思います
自分は何度か失敗しましたがテストサーバだったので削除してやり直しましたが本番だとそうはいかないかなと思います

参考サイト