今回とある場所でMoodleでSSOを実現したいとの事で。
前提条件として、CASでは無くお客様がもってるSSOサーバを使用。
LDAPやRAIDUS認証はせず、パスワード情報は渡さない。
HTTPヘッダーへユーザーIDを埋め込むとの事でした。
環境としてはMoodleがPHPで動作しているので、
初めはcURLを使用してPOSTでログインできないか色々試したがどうも
クッキーやセッションがあり、POSTは出来ているもののログインできない。
試しに適当なログインページを作ってみて、MoodleへPOSTすると
問題なくログイン出来てしまう。
じゃあ、勝手にsubmit出来ればいいんだ~って事になり。
色々探っているとjavasprictで出来る様子。
<BODY onLoad=”document.F.submit();”> <form name=F action=”<?echo $url1;?>” method=”post” id=”login”> <input type=hidden name=username value=<?echo $username1;?>> <input type=hidden name=password value=<?echo $password1;?>> </form> |
こんな感じで、<BODY onLoad=”document.F.submit();”></form>でくくった中を
submitしてくれる様子。
こんな便利なものがあったなんて。
結局最終的には
Moodleをデータベース認証にして、一時SSO用ページにて
DBに一度usernameを書き込みます。パスワードは使わないので適当な数字に
※既にDBにあるユーザーは書き込みせず、ログインする。
ログイン情報はhiddenでsubmitする。
そうすることで問題なくログインできました。
これで無理やりですが、とりあえずSSOが実現できました。
今回はSSO装置をプロキシにして、全てのトラフィックがSSO装置経由になるとの事なので
IPテーブル等で他の通信を受け付けないようにしてしまえば、パスワードを適当な同じものを使用しても
問題なさそうです。
ふぅ。なんちゃってプログラムを書くのは疲れます。
Related Articles
No user responded in this post
Leave A Reply
Please Note: Comment moderation maybe active so there is no need to resubmit your comments