3

私が持っている WebApi サービスからのデータを消費するXamarin クロスプラットフォームモバイル アプリケーションで認証と識別を実装しようとしています。

私の目標は次のとおりです:
モバイル アプリケーションでさまざまなID プロバイダーに対して認証を実行し、セキュリティ トークンを取得して、それを要求のヘッダー内で WebApi サービスに渡すようにします。
その後、サービスは を実装して tokenDelegatingHandler検証し、トークンから userId を抽出して、後で識別と承認が必要になるようにします。
クライアント コードをできるだけ共有できるようにしたいです。

私のオプションAFAIKは次のとおりです。

  1. Azure Mobile Servicesを使用して、クライアント側でフェデレーション セキュリティ トークンを生成し、WebApi サービスでトークンを検証します。この SO answerのおかげで、それは可能だと思います。Xamarin Azure Mobile Services Componentsのおかげで、クライアント側でのコード共有は有望に見えます。

  2. Azure Access Control Service (ACS)を使用して、クライアント側でフェデレーション セキュリティ トークンを生成し、WebApi サービスでトークンを検証します。ただし、クライアントで ACS を使用することを簡単にコード共有できるとは思いません。その上、ACS は町の新人ではありません...

  3. Xamarin.Auth コンポーネントを使用して、ID プロバイダーに対してクライアント側の認証を直接行い、JWT セキュリティ トークンを生成し、WebApi サービスで検証します。これにより、IdP からユーザーのデータへのアクセスが増えるはずです。ただし、現時点では、このコンポーネントは Windows Phone をサポートしていないため、秋の終わりまでに利用できるようになる可能性は低いです。

誰かがこのシナリオに既に対処している場合は、あなたの経験を共有し、正しい方法を教えてください.
そもそも私の目標が間違っている場合は、それを批判することもためらわないでください.

4

1 に答える 1

2

Windows Azure Mobile Services (WAMS) バックエンドを使用していますか? WAMS とは関係のない独自の API があるようです。

JWT を提供し、Twitter/FB & Live (サポートされている IdP) で認証する機能のためだけに WAMS を使用する場合は、WAMS のトークンの特異性を処理する方法を知っているトークン ハンドラーを使用する必要があります。(このドキュメントは、JWT に署名する方法を示しています)。

ACS を使用することは可能ですが、IdP の数も (WAMS より多いとはいえ) 限られており、もちろん API は別のトークン形式を考慮する必要があります。

私たちが書いたこの 2 つのチュートリアルで、このタイプの統合に対する私たちのアプローチを見ることができます。これらは独自の ID プラットフォーム向けですが、使用する SDK はオープン ソースであり、その動作を確認できます (GitHub リポジトリへのリンクを探してください)。

Xamarin チュートリアル

WebApi / MVC チュートリアル

あなたの#3へのコメント。すべての IdP が JWT を発行できるわけではありません。それを生成する仲介者が必要です (例: ACS、私たちのようなサービスなど)。クライアント コードは一般に「信頼されていない」ため、クライアント コードでトークンを生成することはお勧めできません。(secretsデバイスには保存されません)。

于 2013-08-16T15:23:11.947 に答える