3

私はAPIアプリケーションを保護しており、ここで見つけたサンプルアプリケーションでADB2Cフローを正常にテストしました:https://github.com/Azure-Samples/active-directory-b2c-xamarin-native。その構造を使用して、サインインプロセスを起動し、保護されたAPI呼び出しにアクセスできます。新しいAD B2CとC#Azure Mobile Clientのlibをどのように統合するのですか?

しかし、私はWindowsAzure.Mobile sdkを便利なものとして使いたいと思っていました。ここでは、https://cgillum.tech/2016/08/10/app-service-auth-and-azure-ad-b2c-part-2/で、そのクラスのLoginAsyncからB2Cフローをトリガーすることができますが、私はそのように呼び出すと何もしません。

また、トークンを取得するためにMSALの呼び出しを置き換えたhttps://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-dotnet-how-to-use-client-library/(「Active Directory認証ライブラリでユーザーを認証する」までスクロールしています)が見つかりました。これは、サインオンの流れをトリガし、私は良いトークンを取得し、バック主張し、その後、私はいくつかのJSONでそれを入れて、そのようにそれを渡します

AuthenticationResult ar = await App.PCApplication.AcquireTokenSilentAsync(App.Scopes, "", App.Authority, App.SignUpSignInpolicy, false); 
JObject payload = new JObject(); 
payload["access_token"] = ar.AccessToken; 
user = await App.MobileService.LoginAsync(
MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory, payload); 

LoginAsyncこの呼び出しは

{Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: You do not have permission to view this directory or page. at Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+<ThrowInvalidResponse>d__18.MoveNext() [0x0022f] in <filename unknown>:0 --- End of stack trace from previous location where exception was thrown --- (snip)

をスローします

一緒に働くようには設計されていませんか?それらの種類のトークンは異なっていますか?私がB2Cを使用している理由は、本当にすべてのOAUTHのことを知りたくないからです:)

+1

動作していないLoginAsync呼び出しを共有できますか?何もしないと言うと、webviewはまったく表示されますか? – mattchenderson

+0

MSALバージョンの呼び出しでwebviewがポップアップし、その部分が正常に動作します。 LoginAsyncの呼び出しは、上のサンプルコードのとおりです。しかし、LoginAsyncを呼び出すと、何も表示されませんでした。 'JObjectペイロード=新しいJObject(); ペイロード["authenticationToken"] = ar.IdToken; var user = mc.LoginAsync(MobileServiceAutureProvider.WindowsAzureActiveDirectory、payload); ' –

答えて

3

B2Cの場合、実際にアクセストークンではなくIDトークンが戻ってきていますar.AccessTokenプロパティはnullになります。このプロパティは、MSALの最新バージョンにも含まれていないようです。

ペイロードを「authenticationToken」に更新し、代わりにar.IdTokenを使用する必要があると思われます。

ペイロードで「access_token」キーを引き続き使用できるかどうかはわかりませんが、可能性があります。そうでない場合は、代わりに "authenticationToken"を試してください。

+0

こんにちはマット、あなたの助けをありがとう。私はar.IdToken(ar.Tokenと同じ値)で "authenticationToken"と "authenticationToken"を使用しようとしましたが、Azureクライアントlibの邪魔にJSON構文解析例外を生成します: Microsoft.WindowsAzure .MobileServices.MobileServiceAuthentication + d__25.MoveNext()[0x0007b] in <ファイル名不明>:0 私には不透明です。 私はこれについての私の旅行がしばらく行われたと思います。それ以上のアイデアがあれば、試してみて嬉しいです! –

関連する問題