ローカル環境でテストに用に起動できるSAML-IdPサーバ
動機
SAML認証の学習、テストのためにローカルで起動するサーバが欲しかったのですが、日本語で解説してあるページが少ないため、確認方法をここに記載します。
-
https://www.npmjs.com/package/saml-idp
- コマンドラインから起動できるテスト用のIdP(Identity Provider)です。
- 証明書を作成するためopensslを利用します。gitbashなどで操作してください。
※SAML認証を行う簡単なサンプルを作成しました。
https://qiita.com/murasuke/items/9bf5ca8083d1da3dd66f
テスト用IdP(saml-idp)のインストールと設定
- npmでインストールを行うため、とりあえずpackage.jsonを作成します。
npm init -y
- saml-idpをインストール(package.jsonへ追加)します。
npm i -D saml-idp
- IdP用証明書ファイル作成(IdPの必須ファイル)
- 作成したファイルをプロジェクトルートに配置します。(ルートディレクトリでコマンドを実行すれば、コピーする必要はありません)
openssl req -x509 -new -newkey rsa:2048 -nodes -keyout idp-private-key.pem -out idp-public-cert.pem -days 7300
Generating a RSA private key
- Country Name(国名), State or Province Name(県名), Locality Name(都市名)などは、テスト用途なので適当に入力してください。
- 出力するファイル名(idp-public-cert.pem)は、saml-idpのデフォルト名を指定しています。変更する場合は、起動時のコマンドライン指定を修正する必要があります。
作成コマンドサンプル
$ openssl req -x509 -new -newkey rsa:2048 -nodes -keyout idp-private-key.pem -out idp-public-cert.pem -days 7300
Generating a RSA private key
.....+++++
......+++++
writing new private key to 'idp-private-key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Aichi
Locality Name (eg, city) []:Nagoya
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:Test Identity Provider
Email Address []:[email protected]
- 起動用スクリプト登録
- package.jsonの"scripts"に、テスト用IdP起動スクリプトを追加します。
"saml-idp": "saml-idp --acs http://localhost:7000/auth/saml --aud mock-audience"
動作確認
- テスト用Idpサーバ(saml-idp)を起動します。port:7000番でListenします
$ npm run saml-idp
> [email protected] saml-idp C:\Users\test\Documents\git\auth\simple-saml-auth
> saml-idp --acs http://localhost:7000/auth/saml --aud mock-audience
Listener Port:
localhost:7000
HTTPS Enabled:
false
[Identity Provider]
Issuer URI:
urn:example:idp
Sign Response Message:
true
Encrypt Assertion:
false
Authentication Context Class Reference:
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
Authentication Context Declaration:
None
Default RelayState:
None
[Service Provider]
Issuer URI:
None
Audience URI:
mock-audience
ACS URL:
http://localhost:7000/auth/saml
SLO URL:
None
Trust ACS URL in Request:
true
Starting IdP server on port localhost:7000...
IdP Metadata URL:
http://localhost:7000/metadata
SSO Bindings:
urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
=> http://localhost:7000/saml/sso
urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
=> http://localhost:7000/saml/sso
IdP server ready at
http://localhost:7000
- ブラウザでアクセスして下記のような画面が出ればOKです。
Author And Source
この問題について(ローカル環境でテストに用に起動できるSAML-IdPサーバ), 我々は、より多くの情報をここで見つけました https://qiita.com/murasuke/items/f7cb7fd68cd1bf8ec74e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .