ことが可能であるかどうかわからない:私は私のユーザーのためのより良い認証経験を提供するために、ネイティブ・クライアント・フローへのサーバーの流れを切り替えるしたいと思います。ネイティブのAndroid /アズールAppServiceと、Googleのログイン
問題は、ネイティブのログインがちょうどクライアントIDと秘密ではないと連携しながら、AzureのAppServiceは、「Webアプリケーション」のOAuthのセットアップを(クライアントIDや秘密が含まれています)が必要なことです。これは、電話でのログイン後、私はGoogleのトークンを持っているが、AppServiceはそれに何をするかを知らず、HTTP Unauthorized
を返すことを意味する。
モバイルクライアントSDKは私にAPIを提供しますが、それは、そのようなトークンでは動作しません。
var jObject = new JObject(
new JProperty("access_token", auth.AccessToken),
new JProperty("id_token", auth.IdToken));
await ServiceClient.LoginAsync(MobileServiceAuthenticationProvider.Google, jObject);
独自のサーバー側のトークン検証を記述することなくこれを統合する適切な方法はありますか?
Holy Cow Brando、ClientIDにダミーシークレットを追加しました。私はここで2つの質問があります:偽のトークンを提出するAppServiceのセキュリティホールが見つかっただけですか?秘密が一致しない場合、AzureはそのトークンをGoogleの公開鍵インフラストラクチャに対して検証しますか? https://developers.google.com/identity/sign-in/web/backend-auth#verify-the-integrity-of-the-id-tokenをご覧ください。 また、私が使用したキーはAndroidアプリに限られています。つまり、私のアプリサービスは簡単な認証を使ってiOSクライアントをサーバーすることはできません。 –
私の意見では、シークレットはサーバーフローを使用するときにアクセストークンを取得するために使用されます。クライアントフローを使用する場合は、最初にアクセストークンとidtokenを取得し、バックエンドに送信します。バックエンドはidtoken(jwtトークン)をデコードし、それには視聴者が含まれます。オーディエンスがGoogle appidと同じで、ユーザー情報がidtokenデータと等しい場合、authトークンがクライアントに返されます。 –
同じappidを使用してiosとandroidでアクセストークンとIDトークンを取得すると、easy authは適切な認証トークンをクライアントに返すことができます。 –