Google Cloud Datastoreの種類で一意のプロパティを実行する唯一の信頼できる方法は、キープロパティによるものであることはよく知られています。 GoogleユーザーAPIを使用してユーザーを認証するGoogle App Engineer(GAE)アプリケーションを構築していて、Profileという種類を作成したかったとしましょう。ユーザーあたり1つのプロファイルしか存在できません。この一意性を強制するためには、UserオブジェクトIDをキープロパティとして格納するのは理にかなっています。実際には、Google App Engine User API documentationも、この意見:データストアデータストアキーとしてのGAEのuser_idに関するセキュリティ上の懸念
ユーザーIDが安定しているとユーザー値を使用して
。キー名または文字列プロパティとして使用できます。ユーザー値を使用している場合したがって、あなたは、ユーザーID
を保存しかし、私たちのアプリは、ブラウザでは、これらのユーザープロファイルへのハイパーリンクを表示する必要があるとします。 user.user_id()
文字列でURLを作成するのが適切ですか?ユーザーIDは機密情報として扱われるべきではありませんか?ユーザーのGoogleアカウントのuser_idは、すべてのGoogleアプリケーションで同じです。ブラウザに漏れているように見えますが、GAEのドキュメントで何か禁止が見つかることはありません。
の場合、ユーザーIDをクライアントに漏らしてはいけません。ハッシュされるはずですか?または、GoogleのユーザーIDが一意でなければならない種類を設計する他の方法がありますか?
注:ユーザーIDをキーとして使用して、それを現在のユーザーと比較すると問題はありません。問題は、ブラウザに公開できるかどうか(そうでない場合)、一般的に、リソース(ブログ投稿など)の所有者(アプリケーションユーザ)が必要とするケースを処理する方法アプリケーション内に表示されます。
興味深いことに、App Engineでget_current_user()。user_id()で取得したIDを保存し、Google Cloud Consoleでデータストアを確認すると、表示されるIDはhttps://plus.googleのものと異なります。私のプロフィールのURLでcom /。 –
@RayToal GAEユーザーAPIは、必ずしもGoogle+や他のGoogle認証システムと同じIDを使用するとは限りません。 –