2012.09.15

OpenAM + Google Apps 続き

OpenAM で出したURL3つと証明書を、Google Apps の管理ページに登録した後の話。
Google Apps へのログインを、OpenAM でやるところ。

1. OpenAM トップページから、[アクセス制御]タブを開く。
2. レルム名のところにある「/ (最上位のレルム)」リンクを開く。
3. [対象]タブを開く。
4. ユーザーの[新規]ボタンをクリック。
5. IDに Google Apps のアカウント(メールアドレス)を入れ、パスワードも Google Apps のパスワードを入れる。
 その他必須項目を埋めて、[了解]ボタンでユーザが作成される。

これで設定は終わりなので、OpenAMからログアウトする。
Google Apps にログイン中だったら、それもログアウトする。

Google Apps のサービスにログインしようとすると、OpenAM のログイン画面に飛ばされる。
そこで、Google Apps のメールアドレスとパスワードを入れると、Googleのサービスにログインできる。


Posted 2012.09.15, 21:05 by mera and filed in OpenAM
OpenAM + Google Apps 続き はコメントを受け付けていません
2012.09.08

オープンソースカンファレンス 2012 Tokyo/Fall

オープンソースカンファレンス 2012 Tokyo/Fall に行ってきた。
前も行ったけど、明星大学@多摩動物公園って遠い・・・

これが目的。
クラウド時代のOSS戦略~シングルサインオン(OpenAM)、統合ID管理(LISM)など最新事例紹介~

ちょっと早く着いたので、1つ前の
【2本立て】オープンソース「超」入門/ オープンソース最新動向のご紹介 も聞いた。

オープンソースは大規模ビジネスでも使われてることや、
各種ライセンスの説明など。

後半の話がシングルサインオンの人と同じで、同じ内容を2回聞くことになってしまった。。

シングルサインオンの話は、OpenAMOpenLDAPLISM を組み合わせて、
シングルサインオン+ID管理を実現できるという事例の紹介。

技術的な話はなかったけど、きっと詳しい人たくさんいるんだろうな。

オープンソースのビジネスシーンでの浸透具合は、
2000~2005年がLinux、
2005~2010年にApache, Tomcat, PostgreSQLなどのミドルウェア、
2010~2015年がOpenAM (シングルサインオン), Jaspersoft (BI), Liferay (ポータル)、
2015~2020年がSugerCRM (CRM)、ERP だろうとのこと。

OpenAM がこれからどんどん使われるんなら、今ちゃんと知っておいても損はなさそうだな。

OpenAM の Version 10 では、時間帯やアクセス元IPによって認証方式を変えるリスクベース認証もできるらしい。
そういうこととか、いろいろ考えると自分で組むよりもOSSを理解したほうがいろいろできそうだよな・・・


Posted 2012.09.08, 21:08 by mera and filed in PC関係, お出かけ
オープンソースカンファレンス 2012 Tokyo/Fall はコメントを受け付けていません
2012.09.03

Catalyst で OpenID を使ってみる

参考にしたサイト
1. Consumerの実装を知り、OpenIDを使ってみよう
2. PerlでYahoo!とmixiのOpenIDを使ってみよう!

1. のサイトの通りにやったら、Error : signature_mismatch: Prior association invalidated ID provider response. というエラーが出たので、2. のサイトを参考にして、new のときのキャッシュ、debug パラメータを消した。

使用するOpenIDのCPANライブラリは、Net::OpenID::Consumer

cpan> install Net::OpenID::Consumer

で問題なく入る。

OpenID の処理へ飛ばすための場所と、結果が返ってくる場所の2つが必要。
前者が http://localhost:3000/openid, 後者が http://localhost:3000/openid/helper としてある。

http://localhost:3000/openid?openid_url=https://mixi.jp というURLをたたくと、OpenID の認証が始まる。

OpenID の処理へ飛ばすための場所(http://localhost:3000/openid)

use LWP::UserAgent;
use Net::OpenID::Consumer;

sub index : Private {
    my ( $self, $c ) = @_;

    my $csr = Net::OpenID::Consumer->new(
        ua => LWP::UserAgent->new,
        consumer_secret => 'hogehoge',
        args => $c->req->params,
    );

    if (my $cident = $csr->claimed_identity($c->req->params->{openid_url})) {
        $cident->set_extension_args('http://openid.net/srv/ax/1.0', {
            mode => 'fetch_request',
            'type.nickname' => 'http://axschema.org/namePerson/friendly',
            required => 'nickname',
        });
        my $check_url = $cident->check_url(
            return_to => "http://localhost:3000/openid/helper",
            trust_root => "http://localhost:3000/",
        );
        $c->res->redirect($check_url);
    }
    else {
        $c->res->body("Can't create claimed identifier object.");
    }
    $c->stash->{template} = "openid.t";
    $c->forward('Hello::View::TT');
}

結果が返ってくる場所(http://localhost:3000/openid/helper)

use LWP::UserAgent;
use Net::OpenID::Consumer;

sub index : Private {
    my ( $self, $c ) = @_;

    my $csr = Net::OpenID::Consumer->new(
        ua => LWP::UserAgent->new,
        consumer_secret => 'hogehoge',
        args => $c->req->params,
    );

    if (my $setup_url = $csr->user_setup_url) {
        $c->res->redirect($setup_url);
    }
    elsif (my $vident = $csr->verified_identity) { # ここで処理する
        my $ax = $vident->signed_extension_fields('http://openid.net/srv/ax/1.0');

        # ニックネームを取得する
        my $nickname = $c->req->params->{'openid.ax.value.nickname'};
        if(!($nickname)){$nickname = "匿名";}

        # ProfileのURLを取得する
        my $profile = $c->req->params->{'openid.identity'};

        $c->res->body("

" . $nickname . "さんがログインしました。

"); } elsif ($csr->user_cancel) { $c->res->body('Cancel'); } else { Catalyst::Exception->throw('Error : ' . $csr->err); } }

Posted 2012.09.03, 00:22 by mera and filed in Catalyst, OpenID
Catalyst で OpenID を使ってみる はコメントを受け付けていません
2012.09.02

Ubuntu 12.04 の右クリック

PC は Acer Aspire S3-951-F74U。

タッチパネルの右下をクリックしても効かなかったので、
できないものかと思っていたが、できた!!

タッチパネルを2点タッチしたらいいらしい。
クリックではなくて、素早いタッチ。

あとできてないのは、コントロールキーを押しながらクリック。
これができないと、マルチ選択プルダウンとか、複数ファイルの選択とかできなくて不便。

これもやり方があるのかなぁ。。


Posted 2012.09.02, 22:15 by mera and filed in Ubuntu
Ubuntu 12.04 の右クリック はコメントを受け付けていません
2012.09.01

Catalyst で Google の OAuth を使う

ホントはSAMLをやりたかったんだけど、Google::SAML::Response の使い方はわからないし、
ライブラリを使わないでやるのはますますわからないので、いったん置いとく。

OAuthは前に Facebook のをやったときと、ほとんど同じ。

本家サイトを見てできた。

API Console からAPI を使用するためのキーを取得する。
Product name を適当に登録し、Client ID, Client secret, Redirect URIs を使うのでメモする。

sub index : Path :Args(0) {
    my ( $self, $c ) = @_;

    my $app_id = '(API Console の Client ID)';
    my $app_secret = '(API Console の Client secret)';

    my $authz_endpoint = 'https://accounts.google.com/o/oauth2/auth';
    my $token_endpoint = 'https://accounts.google.com/o/oauth2/token';
    my $redirect_uri = 'http://localhost:3000/google'; # Redirect URIs

    # 2) get authorization code
    if ( my $code = $c->req->param('code') ) {

        # 3) get access token
        my $post_params = {
            client_id     => $app_id,
            client_secret => $app_secret,
            redirect_uri  => $redirect_uri,
            grant_type    => "authorization_code",
            code          => $code
        };
        my $request = POST($token_endpoint, $post_params);
        my $ua     = LWP::UserAgent->new;
        my $r      = $ua->request($request);
        my $data = decode_json($r->content());
        my $token = $data->{access_token};

        # 4) get protected resources
        if ($token) {
            my $url = 'https://www.googleapis.com/oauth2/v1/userinfo';
            (略)
            $c->response->body($html);

        } else {
            $c->response->body('fail to get token');
        }

    } else { # 1) redirect to authorization endpoint

        my $uri = URI->new($authz_endpoint);
        $uri->query_form(
            response_type => 'code',
            client_id    => $app_id,
            redirect_uri => $redirect_uri,
            scope => 'https://www.googleapis.com/auth/userinfo.profile'
        );
        $c->res->redirect($uri);
    }
}

Posted 2012.09.01, 23:13 by mera and filed in Catalyst, OAuth
Catalyst で Google の OAuth を使う はコメントを受け付けていません
2012.08.30

OpenAM に Google Apps の設定が・・・

アクセス制御 SSO資料 がとても参考になる

前に作ったアカウントでOpenAM にログインする
(amadmin と設定したパスワード)

「ホストアイデンティティープロバイダの作成」を開く
署名欄のプルダウンで「test」を選択し、新しいトラストサークルの名前をつけて、設定ボタンで完了
完了画面から「Google Apps を設定する」をクリックする

Google Apps Premier Edition を持ってないので、案内に従って作る
「Google Apps アカウントがまだない場合は、すぐに作成する必要があります。
http://www.google.com/apps/intl/en/business/index.html に移動し、Premier Edition アカウントの作成手順に従います。」

「Start Free Trial」から氏名、Email、組織名、人数、電話番号を入力する
次のページは、ドメインの入力で、なければ年間8ドルで買えというので、お名前.com で120円のを作った
OpenAMに戻って、そのドメインを追加し、作成ボタンをクリック

「Google Apps のシングルサインオンの設定」というページに飛ばされて、いろいろパラメータが入ってる
ページ内の下部に手順が書いてある
1. 「検証証明書」をファイルとして保存する
2. Google Apps の管理ページの Advanced tools にURLを貼り付ける
3. アップロードする・・・のだが、Invalid certificate or public key になってアップロードできない!!!!!

また詰まってしまった

どーすりゃいいのさ、これ。

——

どうすればいいのか、後でわかった。
最後の行にある —–END CERTIFICATE—– の部分が独立した行になるように、その前で改行を入れる。
そうしたらアップロードできた。


Posted 2012.08.30, 00:07 by mera and filed in OpenAM
2012.08.23

OpenAM インストール

オープンソースのシングルサインオンやID管理をするもの。
前に書いたCASも同じ類のもの。

OpenAMのサイトからwar形式でダウンロード
→ Latest stable の 10.0.0 をダウンロードした
apache-tomcat/webapps/ 以下に warファイルをコピーしておく

/etc/hosts の 127.0.0.1 に対してドットが2つ以上ある名前を割り当てる(Cookieの都合らしい)
(以下、watashi.no.local.domain とする)

apache-tomcat/conf/tomcat-users.xml にユーザーを追加(しなくてもいいと思う)
 <role rolename=”manager-gui”/>
 <user username=”admin” password=”admin” roles=”manager-gui”/>
→ http://localhost:8080 にアクセスして Manager App から起動中のアプリを確認したりできる

apache-tomcat/bin/startup.sh で Tomcat 起動
http://watashi.no.local.domain:8080/openam_10.0.0 にアクセスすると、OpenAM の設定オプション画面が開く

とりあえず「デフォルト設定」を作成する
デフォルトユーザー(amAdmin)と、デフォルトポリシーエージェント(UrlAccessAgent)のパスワードを設定する
設定ボタンを押すと、何やらいろいろインストールやロードをしている

OpenAM へのログイン (http://watashi.no.local.domain:8080/openam_10.0.0/UI/Login)
先ほど作ったデフォルトユーザーのアカウント名が amadmin なので、それでログインする

設定項目がたくさん出てくる

ここからが大変そうだ^^;

参考にしたサイト
https://wikis.forgerock.org/confluence/display/openam/Deploy+OpenAM
http://openam.forgerock.org/doc/install-guide/index.html

 


Posted 2012.08.23, 23:43 by mera and filed in OpenAM
OpenAM インストール はコメントを受け付けていません
2012.08.22

CAS (Central Authentication Service) インストール

CAS-3.4.2を使ったGoogleAppsのシングルサインオン設定を参考にした。
結局、サインオンするところまでやってない。

1. 本家サイトからTAR.GZでダウンロードして展開。
2. Apache TomcatからCore tar.gzをダウンロードして展開。

3. apache-tomcat-7.0.29/RUNNING.txt を見て、環境の設定をする。
.bashrc に CATALINA_HOME と JRE_HOME を設定。
export CATALINA_HOME=”/home/xxx/apache-tomcat-7.0.29″;
export JRE_HOME=”/usr/lib/jvm/default-java”;

4. 起動
$ cp cas-server-3.5.0/modules/cas-server-webapp-3.5.0.war apache-tomcat-7.0.29/webapp/
$ cd apache-tomcat-7.0.29/bin
$ sh catalina.sh run

http://localhost:8080/cas-server-webapp-3.5.0/login?locale=ja
にアクセスするとログイン画面が出てくる。

ただ、何でログインすればいいのか設定をしてないので、ログインできない。


Posted 2012.08.22, 23:44 by mera and filed in PC関係
CAS (Central Authentication Service) インストール はコメントを受け付けていません
2012.08.18

Catalyst で Facebook の OAuth を使う

ライブラリを使わずにやりたかったので、PerlでOAuth 2.0を使ってみた を参考にした。
こちらのページの Plack::Request, Plack::Response を使わずに、Catalyst の $c->res を使った感じ。

http://localhost:3000/auth というページが Facebook Developers の Site URLに登録してあるとする。
/auth というパスに処理を作るため、
 $ perl script/hello_create.pl controller Auth
で Controller を作り、lib/Hello/Controller/Auth.pm を編集する。

1: Facebookページにリダイレクトして、Facebookにログインし、このアプリのアクセスを許可する
2: $redirect_uri に codeパラメータ付きで戻ってくる
3: token を取得するため、codeパラメータを使用して再び Facebook API にアクセスする
4: その token を使用すると、Facebookのその人の情報にアクセスできる

sub index : Path :Args(0) {
    my ( $self, $c ) = @_;

    my $app_id = '(Facebook Developers の App ID)';
    my $app_secret = '(Facebook Developers の App Secret)';
    my $authz_endpoint = 'https://www.facebook.com/dialog/oauth';
    my $token_endpoint = 'https://graph.facebook.com/oauth/access_token';
    # Facebook Developers の Website with Facebook Login の Site URL
    my $redirect_uri = 'http://localhost:3000/auth';

    # 2) get authorization code
    if ( my $code = $c->req->param('code') ) {

        # 3) get access token
        my $uri = URI->new($token_endpoint);
        $uri->query_form(
            client_id     => $app_id,
            client_secret => $app_secret,
            redirect_uri  => $redirect_uri,
            code          => $code
        );
        my $ua     = LWP::UserAgent->new;
        my $r      = $ua->get($uri);
        my %params = ();
        for my $pair ( split( /&/, $r->content ) ) {
            my ( $key, $value ) = split( /=/, $pair );
            $params{$key} = $value;
        }
        my $token = $params{access_token};

        # 4) get protected resources
        if ($token) {
            my $url = 'https://graph.facebook.com/me/friends';
            (略)
            $c->response->body($html);

        } else {
            $c->response->body('fail to get token');
        }

    } else { # 1) redirect to authorization endpoint

        my $uri = URI->new($authz_endpoint);
        $uri->query_form(
            client_id    => $app_id,
            redirect_uri => $redirect_uri,
        );
        $c->res->redirect($uri);
    }
}

理解のため全コードを Controller に書いてるけど、実際に使うんだったらうまいことキレイにすべし。


Posted 2012.08.18, 23:59 by mera and filed in Catalyst, OAuth
2012.08.18

Catalyst インストール

会社では Catalyst を使ってるので、家マシンにも入れてみた。

Install Catalyst
1. sudo apt-get install build-essential
2. Ubuntuソフトウェアセンターから libcatalyst-perl をインストール
3. sudo perl -MCPAN -e ‘install Task::Catalyst’
(3でいろいろインストールされたので2が足りなかったのかもしれない)

あとは、
$ catalyst.pl Hello (Helloはプロジェクト名)
$ cd Hello/script
$ perl hello_server.pl

ついでに Eclipse で Perl を使えるようにEPICというプラグインを入れた。
http://www.epic-ide.org/updates/


Posted 2012.08.18, 20:40 by mera and filed in Catalyst
Catalyst インストール はコメントを受け付けていません