8

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
4

3 に答える 3

4

記録のために、これを処理することになった方法は、モバイル トークンをサーバーに渡し、サーバーにトークンの信頼性を確認させることです。これが確認されたら、uid と電子メールを使用して自分のレコードに対して認証を確認できます。

于 2012-04-23T09:40:11.230 に答える
1

facebook API で小さな変更を行う必要があります。承認では、から変更します。

[self authorizeWithFBAppAuth:YES safariAuth:YES];

[self authorizeWithFBAppAuth:NO safariAuth:NO];

fbApp や Safari で認証したい場合、トークンに問題がある場合があるためです。これと同じ問題がありました。これにより、Web サービスのトークンが異なっていました。

于 2012-03-25T21:04:03.020 に答える
0

これを解決するための可能な方法は、モバイルでFacebookを介して認証し、暗号化されたf_uidをrailsアプリに送信します。これにより、f_uidが復号化され、実際にサーバーにログインしているユーザーが確認されます。

于 2013-02-24T04:30:36.203 に答える