Carpe Diem

備忘録

OpenAMでRP(Relying Parties)の設定

概要

前回の続きです。
今回はクライアントの方の設定をします。GoogleFacebook等でOAuthを用いた認証の設定をしたことがある人はすぐできます。

OAuthクライアントの作成

アクセス制御/ (最上位のレルム)エージェントOAuth2.0 クライアント
と進んで以下の画面まで移動します。

f:id:quoll00:20141222203859p:plain

エージェント (0 エージェント)新規を押します。

f:id:quoll00:20141222204210p:plain

新しくクライアントを登録します。注意としてこの時の設定が

  • 名前=client_id
  • パスワード=client_secret

として登録されます。今回はOpenAMSamplehogefugapiyoとして作成します。
作成するとエージェントに追加されているのでクリックして詳細を設定します。

f:id:quoll00:20141222204503p:plain

f:id:quoll00:20141222205048p:plain

f:id:quoll00:20141222205054p:plain

f:id:quoll00:20141222205131p:plain

f:id:quoll00:20141222205138p:plain

ここでは主に最低限以下の設定をします。

項目 説明 今回の例
リダイレクトURL Authorization codeやAccess Tokenを返すためのURL http://localhost:3000/oauth2callback
スコープ 認証で必要な承認項目 openid, profile, email
表示する名称 ユーザに承認してもらう際に表示する名称 OpenAMSample
表示する説明 ユーザに承認してもらう際に表示する説明 テストテスト
IDトークン署名応答アルゴリズム トークン署名のアルゴリズムを設定 HS256

完了したら保存します。

OpenIDConnectを使ってみる

実装

OpenID Connect認証の実装部分を参考に認証を動作確認してみます。
passportの設定を以下の様にして、それ以外は全て同じ実装でOKです。

passport.use(new OpenidConnectStrategy({
    authorizationURL: "http://openam.example.com:8080/openam/oauth2/authorize",
    tokenURL: "http://openam.example.com:8080/openam/oauth2/access_token",
    userInfoURL: "http://openam.example.com:8080/openam/oauth2/userinfo",
    clientID: "OpenAMSample",
    clientSecret: "hogefugapiyo",
    callbackURL: "http://localhost:3000/oauth2callback",
    scope: ["openid", "email", "profile" ]
}, function(accessToken, refreshToken, profile, done) {
    console.log('accessToken: ', accessToken);
    console.log('refreshToken: ', refreshToken);
    console.log('profile: ', profile);
    return done(null, profile);
}));

passport.serializeUser(function(user, done){
    done(null, user);
});

passport.deserializeUser(function(obj, done){
    done(null, obj);
});

各URLは前回説明したエンドポイントをそれぞれ設定します。

動作確認

クライアントアプリを起動してlocalhost:3000にアクセスします。

f:id:quoll00:20141214160617p:plain

ログインしてみます。

f:id:quoll00:20141222210453p:plain

するとユーザの承認確認画面に移ります。
ユーザの詳細情報を記述してないので何も表示されてないですが、email等設定しているとここで表示されます。
承認するとログインが完了します。

以上です。お疲れ様でした。

参考