HowTos/SWAでSingle Sign-Onを行う方法
出典: ScalixWikiJP
Scalix Wiki -> How-Tos -> HowTos/SWAでSingle Sign-Onを行う方法
Scalix Web AccessはSingle Sign-Onのインターフェースを直接的には用意していません。 しかし、Single Sign-On的に認証を省略させることは条件を満たせば可能です。
目次 |
Single Sign-Onの動作原理
Scalix Web AccessではURLのパス/webmail/index.jspに対してフォームのパラメータとしてusernameにユーザIDを、passwordにパスワードを設定してPOSTするとログインすることができます。
Single Sign-Onを行いたい場合はこの動作を利用します。
Single Sign-Onの条件
Single Sign-Onを行うためにはサーバ側で以下の条件が必要です。
- HTTPSで通信が暗号化されていること
- ポータルサイト側からアクセスしているユーザのユーザIDを取得できること
- ユーザIDを用いて認証サーバ(LDAP等)から平文のパスワードを取得可能であること
なお、Scalix Web Accessはバックエンドでユーザ毎にIMAP4/SMTP/LDAPサーバに接続するため、認証が必要です。 そのため、ユーザIDとパスワードをどこからか取得する必要があります。
Single Sign-Onの実装方法
Scalix Web Accessのログイン画面を利用せずに、別途ログイン画面を用意することでSingle Sign-Onを実現できます。
CGIやサーブレットなどで、フォームのパラメータにユーザIDとパスワードをhidden属性で埋め込んだログイン画面を生成し、/webmail/index.jspに対してPOSTするようにします。 そうすれば、ユーザはSubmitボタンを押すだけで、ユーザIDとパスワードを再び入力することなしにログインを行うことが可能です。
次のはPerlで書いたログイン画面を生成するCGIの一部です。
print header(-type=>'text/html', -charset=>'utf-8'); print <<EOF <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>Scalix Web Accessの入り口</title> </head> <body> <form action="https://webmail.example.org/webmail/index.jsp" method="post"> <input type="hidden" name="username" value="${user}" /> <input type="hidden" name="password" value="${password}" /> <input type="submit" value="SWAのページに行く" /> </form> </body> </html> EOF
具体的な手順は次の通りです。
- ウェブサーバ(環境変数REMOTE_USER)やポータルサイト等からユーザIDを取得する。
- 認証サーバ(LDAPサーバ等)にユーザIDのユーザを検索して、平文のパスワードを取得する。
- フォームのパラメータusernameとpasswordにユーザIDとパスワードを埋め込んだHTMLページを生成し、表示する。
- ユーザがsubmitしたら、SWAのログインページにパラメータusernameとpasswordがPOSTされる。
- SWAはPOSTされたusernameとpasswordを用いて、バックエンドのIMAP4サーバに接続し、認証を行う。
- IMAP4サーバへの認証が成功するため、SWAはログイン画面を省略し、SWAの画面をポップアップする。
なお、パスワードが平文で埋め込まれるため、セキュリティ上注意が必要です。そのため、HTTPSで通信することが必須です。
連携例
サイボウズ ガルーン2
サイボウズ ガルーン2ではポートレットの機能を使うと、シングルサインオンが可能になります。
HTMLポートレットの設定において、"ポートレットの内容"に次のようなテキストを登録すると、Scalix Web Accessの画面を立ち上げるボタンを表示できます。
<form action="https://webmail.example.org/webmail/index.jsp" method="post" target="swa"> <input type="hidden" name="username" value="%Account%"> <input type="hidden" name="password" value="%Password%"> <input type="submit" value="ウェブメールを開く"> </form>
