Web サイト (Devise と Omniauth を使用した Rails 3.1) とモバイル アプリケーション (iOS5) で認証を共有したいと考えています。つまり、ユーザーが Facebook を使用してサイトに SSI を送信したり、モバイル アプリケーションに SSI を送信したりして、モバイル アプリケーションがユーザーの資格情報を使用して Web サイトの API と通信し、Web サイトに対して認証できるようにしたいと考えています。
私は現在、ユーザーがアカウントに SSI を実行できるように、Web 側でうまく機能しています。また、ユーザー SSI をサポートするモバイル アプリケーションも動作しています。どちらも同じ Facebook アプリケーションを使用しています。
私の問題は、モバイル アプリケーションがサイトに対して認証するために使用できる、2 つの間で共有されるものを見つけることです。明らかに、どちらも同じユーザー ID にアクセスできますが、これはあまり安全ではないようです。私のモバイル アプリケーションにはアクセス トークンがありますが、これは Web サイトのアクセス トークンとは似ていますが、これとは異なります。モバイル アクセス トークンは期限切れになりますが、Web アクセス トークンは期限切れになりません。
Web/Rails トークン (本物ではありません):
DDDAKnu1dg40BDHEWN0VDssxs8GGF8ZBEEOb38HnS0IUEQC1NSufmPCcGeFkTuw39ZDl7OhlZBD2jwJEqXdAZCtZBflJRQKZB4ZA
モバイル/iOS トークン (非実在)
BDDAKnu1dg40BDEo3YjZD2hIwjfZB4slXJj3fmHfzLh5q1xZD0ShfJCb6PMjnApkpM0FTuGGvWnzZBQy4GZCMuysEEqhMz8YgruD53TXKTZC0GPFkfVe0b6fe8wieLLOZDDZA
Facebook のアクセス トークン デバッガーを使用すると、次のようになります (削除されるものはすべてトークン間で同じです)。
Web/Rails トークンの場合:
App ID:
XXXXXXXXXXXXXXXX : SomeAppName
User ID:
XXXXXXXX : My Name
Issued:
1327507734 : 8:08 am Jan 25 2012
Expires:
Never
Valid: True
Origin: Web
Scopes: email offline_access
モバイル/iOS の場合:
App ID:
XXXXXXXXXXXXXXXX : SomeAppName
Metadata: {"sso":"iphone-safari"}
User ID:
XXXXXXXX : My Name
Issued:
1327507734 : 8:08 am Jan 25 2012
Expires:
Never
Valid: True
Origin: Native Mobile
Scopes: email offline_access