<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>tdtshのブログ&#187; OpenID</title>
	<atom:link href="http://www.tdtsh.com/blog/archives/category/openid/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tdtsh.com/blog</link>
	<description>ソーシャルメディアとか スレートとか Google App Engine とかの事の備忘録</description>
	<lastBuildDate>Tue, 07 Feb 2012 05:03:26 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/category/openid/feed" />
		<item>
		<title>GAE/J で OpenID をやってみる（appengine java sdk 1.3.4以降）</title>
		<link>http://www.tdtsh.com/blog/archives/1315</link>
		<comments>http://www.tdtsh.com/blog/archives/1315#comments</comments>
		<pubDate>Thu, 23 Jun 2011 04:44:36 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[OpenID]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1315</guid>
		<description><![CDATA[去年の9月頃からGoogle App Engine for JavaでのOpenIDについて調べ出して、dyuprojectでやってみたりもしましたが、SDK 1.3.4以降はOpenIDに対応しています。 当ブログは泣 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/blog/archives/346">去年の9月頃からGoogle App Engine for JavaでのOpenID</a>について調べ出して、<a href="/blog/archives/346">dyuproject</a>でやってみたりもしましたが、<a href="/blog/archives/648">SDK 1.3.4以降はOpenIDに対応</a>しています。</p>
<p>当ブログは泣かず飛ばずだけど、GAE/JとOpenIDに関してはソコソコ検索エンジンで上位に入っちゃうんで、特に困ってなかったけど折角用意されているんだし、今更ながらやってみます。</p>
<p>コチラの通りにやればGAE/J + Slim3でログイン出来る用になります。<br />
<a href="http://d.hatena.ne.jp/xfan/20110309/1299660956" target="_blank">まずはGAE/J＋slim3でOpenID、そしてOpenID認証とTwitter認証両方に対応してみる &#8211; xfanの日記</a></p>
<p>概要としては、</p>
<p><a href="https://appengine.google.com/" target="_blank">Google App Engineの管理画面</a>で設定をして、</p>
<p>web.xmlで要ログインURLとかを定義して、</p>
<p>/_ah/login_required/に対応するサーブレットを作って、<br />
	(slim3のコントローラでは無く extend HttpServletなん)</p>
<p>ログイン用のjsp (slim3のコントローラでも可)を作って</p>
<p>OP（OpenID Provider）にリダイレクトするコントローラを作ればOK。</p>
<p>ログアウトとか、足りない部分はあとはココを見ながら。<br />
<a href="http://code.google.com/intl/ja/appengine/articles/openid.html" target="_blank">Using Federated Authentication via OpenID in Google App Engine</a></p>
<p><a href="http://d.hatena.ne.jp/hidemon/20100521/1274472966" target="_blank">App Engine 1.3.4 のOpenID 認証 &#8211; hidemonの日記</a></p>
<p><a href="http://d.hatena.ne.jp/knj77/20100612/1276352561" target="_blank">Google App EngineでOpenID OAuth Hybrid &#8211; 後ろ回しゲロ</a><br />
<a href="http://blogs.dion.ne.jp/kotemaru/archives/9923415.html" target="_blank">元、失業SEの開発日誌: GAE/J の OpenID を使ってみた。</a></p>
<p><a href="http://d.hatena.ne.jp/int128/20100525/1274809086" target="_blank">OpenID認証によるシングルサインオン &#8211; GeekFactory</a></p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1315" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1315/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1315" />
	</item>
		<item>
		<title>openid4java で OpenID OP のサンプルを動かしてみる</title>
		<link>http://www.tdtsh.com/blog/archives/1208</link>
		<comments>http://www.tdtsh.com/blog/archives/1208#comments</comments>
		<pubDate>Thu, 17 Mar 2011 10:43:01 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[OpenID]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[ソーシャルメディア]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1208</guid>
		<description><![CDATA[openid4javaのサンプルを動かしてみる 事前にJDKとmeven2のインストールが必要です。 openid4javaのDownloadsから、[openid4java-full-0.9.5.593.tar.gz] [...]]]></description>
			<content:encoded><![CDATA[<h4>openid4javaのサンプルを動かしてみる</h4>
<p>事前にJDKとmeven2のインストールが必要です。</p>
<p><a href="http://code.google.com/p/openid4java/" target="_blank">openid4java</a>の<a href="http://code.google.com/p/openid4java/downloads/list" target="_blank">Downloads</a>から、[openid4java-full-0.9.5.593.tar.gz]をダウンロードし、C:\<br />
にでも解凍する。</p>
<p>CMD.exe を起動し以下を実行。</p>
<pre>
cd c:\openid4java-full-0.9.5.593\samples\simple-openid
mvn jetty:run
</pre>
<pre>

http://localhost:8080/simple-openid
</pre>
<p>をブラウズすると、OpenID RPのテストが出来ます。Yahoo OpenID なり mixiIDなりで試します。</p>
<p>OpenID プロバイダを試すには、上記URLにて、これ</p>
<pre>

http://localhost:8080/simple-openid/user.jsp
</pre>
<p>を入力します。</p>
<p>次回はコレを参考に、OpenID プロバイダを作ってみようと思います。</p>
<p>
&nbsp;</p>
<p>参考サイト</p>
<p><a href="http://www.ibm.com/developerworks/jp/java/library/j-openid/" target="_blank">Java Web アプリケーションのための OpenID: 第1回 / IBM</a></p>
<p><a href="http://www.ibm.com/developerworks/jp/java/library/j-openid2/" target="_blank">Java Web アプリケーションのための OpenID: 第2回 / IBM</a></p>
<p><a href="http://d.hatena.ne.jp/travelershouse/20100711/1278810757" target="_balnk">WinstoneでOpenID4Java &#8211; 不悔必省</a></p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1208" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1208/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1208" />
	</item>
		<item>
		<title>ヘッダにOGP (Open Graph Protocol)を入れてmixiやFacebookやGREEで試す</title>
		<link>http://www.tdtsh.com/blog/archives/1084</link>
		<comments>http://www.tdtsh.com/blog/archives/1084#comments</comments>
		<pubDate>Thu, 03 Feb 2011 15:05:28 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[OAuth]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[ソーシャルメディア]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=1084</guid>
		<description><![CDATA[OGP情報ヘッダに入れてますか？ 要は、Facebook likeとかmixiチェックとかをWEBサイトに導入するとき、Open Graph Protocolに従い、HTMLヘッダのmetaタグ書きましょう、と言う事です [...]]]></description>
			<content:encoded><![CDATA[<p>OGP情報ヘッダに入れてますか？</p>
<p>要は、Facebook likeとかmixiチェックとかをWEBサイトに導入するとき、<a href="http://developers.facebook.com/docs/opengraph/" target="_blank">Open Graph Protocol</a>に従い、HTMLヘッダのmetaタグ書きましょう、と言う事です。</p>
<blockquote><p>
	<a href="http://d.hatena.ne.jp/amachang/20110117/1295233078" target="_blank">フェイスブック、ミクシィ、グリーで使われている OGP (Open Graph Protocol) とは何か &#8211; IT戦記</a></p>
</blockquote>
<p>当ブログはwordpressのプラグインに全てお任せで入れてませんけど、他でmixiチェック、GREEイイね、Facebook likeで色々実験してみました。</p>
<p>さっとググッてさっと実験しただけなんで、誤りを含んでいる可能性が大いにあります。鵜呑みにしないでください。<br />
誤りを見つけた方はご指摘ください。</p>
<p>
&nbsp;</p>
<hr />
HTMLタグは、こんな感じに。</p>
<blockquote><p>
	&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221; xml:lang=&#8221;ja&#8221; lang=&#8221;ja&#8221; xmlns:og=&#8221;http://opengraphprotocol.org/schema/&#8221; xmlns:gr=&#8221;http://gree.jp/ns&#8221; xmlns:fb=&#8221;http://www.facebook.com/2008/fbml&#8221; xmlns:mixi=&#8221;http://mixi-platform.com/ns#&#8221;&gt;
</p></blockquote>
<p>裏取り無し、純粋コピペだけでつくりました。<br />
まぁ動いたんで大きくは間違ってないんでしょう。</p>
<p>
&nbsp;</p>
<hr />
<pre>
	&lt;meta property="og:type" content="blog"&gt;
</pre>
<p>コレ、何を入れたらイイのか良く判りません。ググってみると、サンプルコードは&#8221;blog&#8221;となっている事が多いです。</p>
<p>調べてみました。</p>
<blockquote><p>
	Use article for any URL that represents transient content &#8211; such as a news article, blog post, photo, video, etc. Do not use website for this purpose. website and blog are designed to represent an entire site, an og:type tag with types website or blog should usually only appear on the root of a domain.<br />
	<a href="http://developers.facebook.com/docs/opengraph#types" target="_blank">Object types / Open Graph protocol &#8211; Facebook developpers</a>
</p></blockquote>
<p>どうやら、ブログやSNSとかCMSとかの個々の記事には、&#8221;article&#8221;を使うのが正解の様です。</p>
<p>&#8220;website&#8221;や&#8221;blog&#8221;は、そのサイトのトップやDocumentRootのページに設定して、そのサイトそのものを表現する時に使うのが正しい作法の様です。<br />
多分。</p>
<p>
&nbsp;</p>
<hr />
<blockquote><p>
	&lt;meta property=&#8221;og:title&#8221; content=&#8221;ココにタイトルを入れる&#8221;&gt;
</p></blockquote>
<p>これは各社共通で、イイね的な投稿の本文的なものになります。</p>
<p>コレを入れとかないと、サイト名になったり、ブラウザタイトルが入ったりと、マチマチの様です。</p>
<p>誤解を恐れずにいうと、ココをイイ感じに引きのあるタイトルにする事がOGPを導入する最大のメリットなんで、がんばって設定しましょう。</p>
<p>
&nbsp;</p>
<hr />
<blockquote><p>
	&lt;meta property=&#8221;og:image&#8221; content=&#8221;http://www.your.site/path/to/image.gif&#8221;&gt;
</p></blockquote>
<p>これはOGPの必須項目になっているんで最初はWEBサイトのロゴ画像を設定してたんですが、mixiチェックでこの画像が自動で挿入されてしまいます。</p>
<p>個々の記事のチェックなのにサイトのロゴが入るのはうまくないですね。</p>
<p>入れないでも、一応mixiとGREEとfacebookはちゃんとイイね的な事ができました。</p>
<p>因みにmixiは、その記事のページをクロールして画像を探し出し、mixiチェックボタンを押下した時に選択させる、と言う仕様になっています。</p>
<p>それが嫌な場合は、こう書けばやめてくれました。</p>
<pre>
	&lt;meta name="mixi-check-robots" CONTENT="noimage"&gt;
</pre>
<p><a href="http://d.hatena.ne.jp/hebita164/20101206/1291659273" target="_blank">Open Graph protocolの画像クロールについて &#8211; web探検隊</a></p>
<p>
&nbsp;</p>
<hr />
Facebookのlikeの場合、</p>
<pre>
	&lt;meta property="fb:admins" content="FacebookアカウントのID" /&gt;
</pre>
<p>の様なんが必要です。</p>
<p>このやり方でいくと、個々のページをイイねされる度にファンサイトが増えていくんです。</p>
<p>こう書いた方がいいです。</p>
<pre>
	&lt;meta property="fb:app_id" content="FaceookアプリのID" /&gt;
</pre>
<p>それには、Facebookアプリを作る必要があります。</p>
<blockquote><p>
	*** fb:admins の代わりに fb:app_id を使う<br />
	fb:admins を使って、手動でお知らせを流すことが出来るのは良い機能なのですが、一つのサイトにたくさんのウェブページがあって、たくさんの「いいね！」があった場合は一個一個のページに対して管理していくのは大変ですね。<br />
	そんな場合は、 fb:admins の代わりに fb:app_id を使うことで、プログラムからそれらの作業を自動化することが出来ます。<br />
	やり方としては、以下のページからお知らせ専用のフェイスブックアプリを作ります。<br />
	[<a href="http://www.facebook.com/developers/createapp.php:title" target="_blank">http://www.facebook.com/developers/createapp.php:title</a>
</p></blockquote>
<p>アプリといっても、要は自分のFacebookアカウントの様に、Facebook上に基本データとウォールを持ったオブジェクトをもう一つ登録するイメージです。アプリの実体はあなたのサイトと言う理屈です。</p>
<p>とりあえず作るのは簡単でした。<br />
色々と良く判らない部分がまだありますけど、Facebookでイイねは出来てました。</p>
<p>その他参考にさせて頂いた記事たち</p>
<p><a href="http://geeorgey.ldblog.jp/archives/1663655.html" target="_blank">ライブドアブログ( @livedoorblog )にOGP (Open Graph Protocol) を組み込んでFacebookで体験してみた件とライブドアブログへの要望</a></p>
<p><a href="http://blogs.itmedia.co.jp/naoto/2010/05/post.html">【Facebook】Open Graph Protocol 説明：プロジェクトマネジメント10.0：ITmedia オルタナティブ・ブログ</a></p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/1084" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/1084/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/1084" />
	</item>
		<item>
		<title>OpenID RP を Google App Engine (java) で (dyuproject)</title>
		<link>http://www.tdtsh.com/blog/archives/587</link>
		<comments>http://www.tdtsh.com/blog/archives/587#comments</comments>
		<pubDate>Thu, 18 Mar 2010 06:02:19 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=587</guid>
		<description><![CDATA[&#160; 前回も書きましたが、GAE/J上ではSocketが使えない。故にopenid4javaはGAEでは使えない。 でも、dyuprojectは動くし、動かした上にコードを公開されている方もいる。 どうやらGAE [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;<br />
<a href="http://www.tdtsh.com/blog/archives/346">前回</a>も書きましたが、GAE/J上ではSocketが使えない。故にopenid4javaはGAEでは使えない。</p>
<p>でも、<a href="http://code.google.com/p/dyuproject/">dyuproject</a>は動くし、<a href="http://d.hatena.ne.jp/knj77/20100211/1265884534">動かした上にコードを公開されている方</a>もいる。</p>
<p>どうやらGAE/Jの URLフェッチ API を使っている模様。そりゃそれしか方法はないですよね。</p>
<p>私は職業プログラマでは無いので、車輪の再開発どころか、なるべくコードは書きたくないんです。<br />
早速、dyprojectにトライしてみましょう。<br />
&nbsp;<br />
&nbsp;</p>
<hr />
<h4>dyuproject-openid-1.1.6-jarjar.jar のダウンロード</h4>
<p><a href="http://code.google.com/p/dyuproject/">dyuproject</a>の<a href="http://code.google.com/p/dyuproject/downloads/list">Downloads</a>から、<a href="http://dyuproject.googlecode.com/files/dyuproject-1.1.6.zip">dyuproject-1.1.6.zip</a>をダウンロードします。</p>
<p>JavaDocとか他のライブラリとかデモが不要なら、<a href="http://dyuproject.googlecode.com/files/dyuproject-openid-1.1.6-jarjar.jar">dyuproject-openid-1.1.6-jarjar.jar</a> でもいいです。<br />
&nbsp;<br />
&nbsp;</p>
<hr />
<h4>eclipseのGAEプロジェクトへライブラリを追加する</h4>
<p>ダウンロードしたzipファイルの、/dist に、dyuproject-openid-1.1.6-jarjar.jar はあります。<br />
それを、eclipse の /war/WEB-INF/lib/にコピーします。</p>
<p>eclipseを起動して、war/WEB-INF/lib/ の下にコピーしたjarファイルを右クリックして、[ビルド・バス(B)] &#8211; [ビルド・パスに追加(A)]をクリックします。</p>
<p>念のため、プロジェクトの[参照ライブラリー]に追加されている事を確認します。<br />
&nbsp;<br />
&nbsp;</p>
<hr />
<h4>/WEB-INF/web.xml に追記する</h4>
<p><a href="http://code.google.com/p/dyuproject/wiki/QuickStartOpenid">QuickStartOpenid &#8211; dyuproject</a>のんを参考にしながら書きます。<br />
ちょっとだけ手を加え (ログアウト用サーブレットを追加とか) ましたが、基本的に同じです。</p>
<pre>
&lt;filter&gt;
    &lt;filter-name&gt;openid-filter&lt;/filter-name&gt;
    &lt;filter-class&gt;com.dyuproject.openid.OpenIdServletFilter&lt;/filter-class&gt;
    &lt;init-param&gt;
        &lt;param-name&gt;forwardUri&lt;/param-name&gt;
        &lt;param-value&gt;/&lt;/param-value&gt;
    &lt;/init-param&gt;
&lt;/filter&gt; 

&lt;filter-mapping&gt;
    &lt;filter-name&gt;openid-filter&lt;/filter-name&gt;
    &lt;url-pattern&gt;/openid-login&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;

&lt;filter-mapping&gt;
    &lt;filter-name&gt;openid-filter&lt;/filter-name&gt;
    &lt;url-pattern&gt;/openid-logout&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;

&lt;servlet&gt;
    &lt;servlet-name&gt;openid-servlet&lt;/servlet-name&gt;
    &lt;servlet-class&gt;my.package.OpenIdLoginServlet&lt;/servlet-class&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;openid-servlet&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/openid-login&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

&lt;servlet&gt;
    &lt;servlet-name&gt;openid-logout&lt;/servlet-name&gt;
    &lt;servlet-class&gt;my.package.OpenIdLogoutServlet&lt;/servlet-class&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;openid-logout&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/openid-logout&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
</pre>
<h4>ログイン用サーブレットを作る</h4>
<p><a href="http://code.google.com/p/dyuproject/wiki/QuickStartOpenid">QuickStartOpenid &#8211; dyuproject</a>のサンプルコードにほんに少しだけ異常系を付け足しただけです。</p>
<pre>
package my.package;

import com.dyuproject.openid.RelyingParty;
import com.dyuproject.openid.ext.AxSchemaExtension;
import com.dyuproject.openid.OpenIdUser;

public class OpenIdLoginServlet extends HttpServlet {

    static {
        RelyingParty.getInstance()
        .addListener(new AxSchemaExtension()
            .addExchange("email")
            .addExchange("nickname")
            .addExchange("fullname")
            .addExchange("gender")
            .addExchange("postcode")
            .addExchange("country")
            .addExchange("language")
        );
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        OpenIdUser user = (OpenIdUser) request.getAttribute(OpenIdUser.ATTR_NAME);
        if (user != null) {
            String identity = user.getIdentity();
            HttpSession session = request.getSession();
            session.setAttribute("identity", identity);
            Map<String,String> axschema = AxSchemaExtension.get(user);
            if (axschema != null &#038;&#038; axschema.size() > 0) {
                session.setAttribute("email", axschema.get("email"));
                session.setAttribute("nickname", axschema.get("nickname"));
            } else {
                session.setAttribute("email", "unknown");
                session.setAttribute("nickname", identity);
            }
        } else {
            //
        }
        response.sendRedirect(response.encodeRedirectURL(request.getParameter("redirect_url")));
    }

}
</pre>
<p>&nbsp;<br />
&nbsp;</p>
<hr />
<h4>ログアウト用サーブレットを作る</h4>
<p><a href="http://code.google.com/p/dyuproject/wiki/QuickStartOpenid">QuickStartOpenid &#8211; dyuproject</a>にはサンプルが無かったけど、ログインしっぱなしじゃ困るから、ログアウト用サーブレットも作ります。</p>
<pre>
package my.package;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.servlet.http.HttpSession;
import javax.servlet.RequestDispatcher;

public class OpenIdLogoutServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        HttpSession session = request.getSession(false);
        session.invalidate();
        response.sendRedirect(response.encodeRedirectURL(request.getParameter("redirect_url")));

    }
}
</pre>
<p>&nbsp;<br />
&nbsp;</p>
<hr />
<h4>動かす</h4>
<p>あとはHTMLでいいので、OpenIDプロバイダのURLを引数 &#8220;openid_identifier&#8221;にセットして、サーブレットに渡すAタグなり、フォームなりを書いて実行します。</p>
<p>mixi OpenIDならこんな感じですね。</p>
<pre>
&lt;a href="openid-login?openid_identifier=https://mixi.jp"&gt;mixiでログインします&lt;/a&gt;
</pre>
<p>なんて簡単なんでしょう。</p>
<p>サンプルコードでは、mixi、Google、Yahoo!、openid.ne.jp は動きました。<br />
hatena はうまくいきませんでした。なんでだろう。</p>
<p>nickNameが取れたのはmixiだけでした。</p>
<p>&nbsp;<br />
&nbsp;</p>
<hr />
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/587" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/587/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/587" />
	</item>
		<item>
		<title>GAE java (Google App Engine) 上でのOpenID と まとめ</title>
		<link>http://www.tdtsh.com/blog/archives/346</link>
		<comments>http://www.tdtsh.com/blog/archives/346#comments</comments>
		<pubDate>Fri, 04 Sep 2009 13:36:08 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[クラウド]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=346</guid>
		<description><![CDATA[GAE/JでOpenIDのRPを実装したい。 個人で作るWEBサービスなら兎も角、法人の場合とかはGAE上にメールアドレスとかの個人情報をぶっこみたく無い、なんてニーズは当然あると思う (実際にわたしがそうです) んです [...]]]></description>
			<content:encoded><![CDATA[<p>GAE/JでOpenIDのRPを実装したい。</p>
<p>個人で作るWEBサービスなら兎も角、法人の場合とかはGAE上にメールアドレスとかの個人情報をぶっこみたく無い、なんてニーズは当然あると思う (実際にわたしがそうです) んです。</p>
<p>前から何となく疑問に思っていました。<br />
Google App Engine (Java) で OpenIDを動かすにはどーすれば？</p>
<p>openid4javaはソケットを使用するけど、GAEのJREサンドボックス上では使えない。故に動かない。</p>
<p><a href="http://d.hatena.ne.jp/itoasuka/20081016/1224138824">Java で OpenID を扱う情報って少なくないですか？ &#8211; イトウ アスカ blog</a><br />
少ないですね。ひっしで集めてます。</p>
<p><a href="http://tsukuyomi.sourceforge.jp/openid/index.html">Tsukuyomi OpenID &#8211; このプロジェクトについて</a>の様な先人もおられます。</p>
<p><a href="http://groups.google.co.jp/group/google-appengine/browse_thread/thread/9e4381f41c7d942f?pli=1">Implement OpenID consumer in App Engine (Java) &#8211; Google App Engine | Google グループ</a></p>
<p>こんなのがあるらしい。(2010-03-10 下に追記あり)<br />
<a href="http://code.google.com/p/dyuproject/">dyuproject &#8211; Project Hosting on Google Code</a></p>
<blockquote><p>
java REST framework servlet-based (Java REST Annotations impl), openid 2.0 relying party, oauth 1.0a consumer and service provider, json-ioc
</p></blockquote>
<p>こんなのも。<br />
<a href="http://appengine-cookbook.appspot.com/recipe/accept-google-aol-yahoo-myspace-facebook-and-openid-logins/"> App Engine Recipe &#8211; Accept Google, AOL, Yahoo, MySpace, Facebook, and OpenID Logins</a></p>
<blockquote><p>
RPX (http://rpxnow.com/) is a free service which authenticates users via OpenID and other protocols for your website. It speaks the individual protocol APIs, and exposes a simple restful interface for you to access both authentication and profile data from Identity Providers like Google, AOL, Yahoo, Facebook, and MySpace. RPX also provides you with a popup and iframe based widget that you may add to your site to help your users choose their authentication provider.
</p></blockquote>
<p>RPX( http://rpxnow.com/ )は、 OpenIDを、あなたのウェブサイトの他のプロトコルを介して、ユーザー認証の無料サービスです。<br />
個々のプロトコルのAPIを話し、あなたのための両方の認証およびアイデンティティプロバイダーGoogleは、 AOLやヤフー、 Facebookのようにからのプロファイルデータにアクセスするためのシンプルな安らかなインターフェイスを公開し、 MySpaceの。 RPXもポップアップとインラインフレームベースのウィジェットとは、お客様のサイトにユーザーが選択するための認証プロバイダを追加することができます提供しています。</p>
<p><a href="http://handasse.blogspot.com/2009/08/google-app-enginemixi.html">良いもの。悪いもの。: Google App Engineを利用してmixiアプリを作成する</a></p>
<p><a href="http://groups.google.co.jp/group/google-appengine/browse_thread/thread">Implement OpenID consumer in App Engine (Java) &#8211; Google App Engine | Google グループ</a><br />
誰もなんも返事できないみたい。</p>
<p>&nbsp;<br />
<br />
&nbsp;<br />
</p>
<hr />
追記 2010-03-10<br />
Google様で 「OpenID GAE」で検索すると、いつの間にか当サイトが1位になっちゃっています。そんだけマイナーな組み合わせなのか・・・</p>
<p></p>
<hr />
追記 2010-03-18<br />
先述の<a href="http://code.google.com/p/dyuproject/">dyuproject</a>で、OpenID RPを実際にGAE/Jで動かされた方がおられるようです。<br />
<a href="http://d.hatena.ne.jp/knj77/20100211/1265884534">Google App Engine for JavaでOpenIDを試してみた。 &#8211; 後ろ回しゲロ</a><br />
サンプルコードまで公開してくださっています。</p>
<p>わたしもdyuprojectを使って挑戦してみました。<br />
<a href="http://www.tdtsh.com/blog/archives/587">あわせてご覧ください</a></p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/346" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/346/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/346" />
	</item>
		<item>
		<title>bookmarks 2009-07-27 (OpenID)</title>
		<link>http://www.tdtsh.com/blog/archives/196</link>
		<comments>http://www.tdtsh.com/blog/archives/196#comments</comments>
		<pubDate>Mon, 27 Jul 2009 01:28:27 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[OpenID]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=196</guid>
		<description><![CDATA[前回に引き続き、OpenID関連のブックマーク達。 Openid4java &#8211; nigredoな日々 ～　arcanum.jpの出張所　～ openid4java-0.9.3.jarを動かすための依存性一覧。 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tdtsh.com/blog/archives/6">前回</a>に引き続き、OpenID関連のブックマーク達。</p>
<p><a href="http://d.hatena.ne.jp/nigredo/20081126/1227712653">Openid4java &#8211; nigredoな日々 ～　arcanum.jpの出張所　～</a><br />
openid4java-0.9.3.jarを動かすための依存性一覧。</p>
<p><a href="http://kozy.heteml.jp/pukiwiki/index.php?OpenID%2BJava#wff1d099"> OpenID Java &#8211; kozy.heteml.jp</a><br />
openid4javaを使用した、OpenID実装のサンプルコード。</p>
<p><a href="http://d.hatena.ne.jp/ZIGOROu/20090519/1242714985">OpenID TechNight #5 の資料を公開します &#8211; Yet Another Hackadelic</a></p>
<p><a href="http://www.slideshare.net/zigorou/openid-mobile-profile">OpenID Mobile Profile</a></p>
<p><a href="http://www.slideshare.net/zigorou/introduction-openid-authentication-20-revival-1456581"> Introduction OpenID Authentication 2.0 Revival</a><br />
OpenIDを説明するスライド。</p>
<p><a href="http://tamagonoheitai.blog105.fc2.com/blog-entry-62.html"> openid4java　０から始めるブログ</a></p>
<p><a href="http://d.hatena.ne.jp/kamicup/20090507/1241715307">openid4java を弄る &#8211; kamicupの備忘録</a></p>
<p><a href="http://code.google.com/p/openid4java/">openid4java &#8211; Project Hosting on Google Code</a></p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/196" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/196/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/196" />
	</item>
		<item>
		<title>bookmarks 2009-07-25</title>
		<link>http://www.tdtsh.com/blog/archives/194</link>
		<comments>http://www.tdtsh.com/blog/archives/194#comments</comments>
		<pubDate>Fri, 24 Jul 2009 16:16:23 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[OpenID]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=194</guid>
		<description><![CDATA[ビギナーWeb プログラマに一皮むけるためにやってほしい5つのこと &#8211; イトウ アスカblog asahi.com（朝日新聞社）：和歌山・北山村のブログ「村ぶろ」人気　貴重な収入源に &#8211; 社会 村 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://d.hatena.ne.jp/itoasuka/20090715/1247621338">ビギナーWeb プログラマに一皮むけるためにやってほしい5つのこと &#8211; イトウ アスカblog</a></p>
<p><a href="http://www.asahi.com/national/update/0708/OSK200907080098.html"> asahi.com（朝日新聞社）：和歌山・北山村のブログ「村ぶろ」人気　貴重な収入源に &#8211; 社会</a></p>
<p><a href="http://www.murablo.jp/">村ぶろ</a></p>
<p><a href="http://d.hatena.ne.jp/itoasuka/20081016/1224138824">Java で OpenID を扱う情報って少なくないですか？ &#8211; イトウ アスカblog</a></p>
<p><a href="http://tsukuyomi.sourceforge.jp/openid/userguide.html">Tsukuyomi OpenID &#8211; ユーザガイド</a></p>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/194" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/194/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/194" />
	</item>
		<item>
		<title>bookmarks 2009-06-04</title>
		<link>http://www.tdtsh.com/blog/archives/32</link>
		<comments>http://www.tdtsh.com/blog/archives/32#comments</comments>
		<pubDate>Thu, 04 Jun 2009 02:56:17 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[OpenID]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=32</guid>
		<description><![CDATA[@IT 第5回　OpenIDを実装したソースコードを読もう http://www.atmarkit.co.jp/fcoding/articles/reading/05/reading05a.html @IT OpenID [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>@IT 第5回　OpenIDを実装したソースコードを読もう</p>
<p><a href="http://www.atmarkit.co.jp/fcoding/articles/reading/05/reading05a.html" target="_blank">http://www.atmarkit.co.jp/fcoding/articles/reading/05/reading05a.html</a></p>
<p>@IT OpenIDの仕様と技術 Index</p>
<p><a href="http://www.atmarkit.co.jp/fsecurity/index/index_openid.html" target="_blank">http://www.atmarkit.co.jp/fsecurity/index/index_openid.html</a></p>
<p>@IT OpenIDの仕様と技術 第2回 あなたのサイトをOpenID対応にしている2行の意味</p>
<p><a href="http://www.atmarkit.co.jp/fsecurity/rensai/openid02/openid01.html" target="_blank">http://www.atmarkit.co.jp/fsecurity/rensai/openid02/openid01.html</a></p>
<p>これらを集中管理できる。コミュニティサイトでは、これで充分か？</p>
<p>    ニックネーム</p>
<p>    メールアドレス</p>
<p>    フルネーム</p>
<p>    誕生日</p>
<p>    性別</p>
<p>    郵便番号</p>
<p>    国</p>
<p>    言語</p>
<p>    タイムゾーン</p>
<p>@IT OpenIDの仕様と技術 第4回 OpenIDをとりまくセキュリティ上の脅威とその対策</p>
<p><a href="http://www.atmarkit.co.jp/fsecurity/rensai/openid04/openid01.html" target="_blank">http://www.atmarkit.co.jp/fsecurity/rensai/openid04/openid01.html</a></p>
<p>OpenIDでもフィッシングの脅威は考えなくてはならない。</p>
<p>アカウント名もバレバレになるので、パスワードの強度強化が必要。</p>
<p>クラウド・セキュリティのベスト・プラクティス確立に向けて2団体が協力 </p>
<p><a href="http://www.computerworld.jp/topics/cloud/148049.html" target="_blank">http://www.computerworld.jp/topics/cloud/148049.html</a></p>
<p>L0phtcrack is Back!</p>
<p><a href="http://isc.sans.org/diary.html?storyid=6496" target="_blank">http://isc.sans.org/diary.html?storyid=6496</a></p>
<p>Google App Engine for Javaを使ってみよう！（6）Mail Java API </p>
<p><a href="http://codezine.jp/article/detail/3917" target="_blank">http://codezine.jp/article/detail/3917</a></p>
<p>メルマガ配信などの大量配信は出来るのかな？</p>
<p>suz-lab LAMP環境用&#8221;CentOS AMI&#8221;</p>
<p><a href="http://suz-lab.blogspot.com/2009/06/lampcentos-ami.html" target="_blank">http://suz-lab.blogspot.com/2009/06/lampcentos-ami.html</a></p>
</div>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/32" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/32/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/32" />
	</item>
		<item>
		<title>mixiのOpenID</title>
		<link>http://www.tdtsh.com/blog/archives/6</link>
		<comments>http://www.tdtsh.com/blog/archives/6#comments</comments>
		<pubDate>Thu, 14 May 2009 09:40:55 +0000</pubDate>
		<dc:creator>tdtsh</dc:creator>
				<category><![CDATA[OpenID]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.tdtsh.com/blog/?p=6</guid>
		<description><![CDATA[mixiのOpenIDで使えるサイトをメモ。 http://www.mloader.net/ http://nitan.mixgroup.jp/ OpenSocial入門 ~ソーシャルアプリケーションの実践開発 post [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>mixiのOpenIDで使えるサイトをメモ。</p>
<p><a href="http://www.mloader.net/" target="_blank">http://www.mloader.net/</a></p>
<p><a href="http://nitan.mixgroup.jp/" target="_blank">http://nitan.mixgroup.jp/</a></p>
<p>
<div style="margin-bottom:0px;" class="amazlet-box">
<div style="float:left;" class="amazlet-image"><a target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/4774137480/tdtsh-22/ref=nosim/" name="amazletlink"><img alt="OpenSocial入門 ~ソーシャルアプリケーションの実践開発" src="http://ecx.images-amazon.com/images/I/61fB3GEbkrL._SL160_.jpg" style="border: none;"></a></div>
<div style="float:left;margin-left:15px;line-height:120%" class="amazlet-info">
<div style="margin-bottom:10px;line-height:120%" class="amazlet-name"><a target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/4774137480/tdtsh-22/ref=nosim/" name="amazletlink">OpenSocial入門 ~ソーシャルアプリケーションの実践開発</a>
<div style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%" class="amazlet-powered-date">posted with <a target="_blank" href="http://www.amazlet.com/browse/ASIN/4774137480/tdtsh-22/ref=nosim/" title="OpenSocial入門 ~ソーシャルアプリケーションの実践開発">amazlet</a> at 09.05.20</div>
</div>
<div class="amazlet-detail">田中 洋一郎 <br />技術評論社 <br />売り上げランキング: 28039</div>
<div style="margin-top:10px; margin-bottom:10px" class="amazlet-review">
<div style="margin-bottom:5px" class="amazlet-review-average">おすすめ度の平均: <img alt="4.0" src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif"></div>
<p><img alt="4" src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif"> 内容の濃い良書</div>
<div style="margin-top: 5px" class="amazlet-link"><a target="_blank" href="http://www.amazon.co.jp/exec/obidos/ASIN/4774137480/tdtsh-22/ref=nosim/" name="amazletlink">Amazon.co.jp で詳細を見る</a></div>
</div>
<div style="clear: left" class="amazlet-footer"></div>
</div>
</div>
<div id="fb-root"></div>
   <script>
   window.fbAsyncInit = function() {
   FB.init({appId: "135970219784621", status: true, cookie: true,
		 xfbml: true});
	};
 (function() {
  var e = document.createElement("script"); e.async = true;
 e.src = document.location.protocol +
   "//connect.facebook.net/jv_ID/all.js";
 document.getElementById("fb-root").appendChild(e);
}());
</script><span class = ""  style = "  "><fb:like href="http://www.tdtsh.com/blog/archives/6" send = "false" layout="standard" show_faces="false" width="" action="like" colorscheme="light" font="" /></span>]]></content:encoded>
			<wfw:commentRss>http://www.tdtsh.com/blog/archives/6/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tdtsh.com/blog/archives/6" />
	</item>
	</channel>
</rss>

