我已經確保了我的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流程,但當我以這種方式調用它時,它什麼也不做。
我還發現https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-dotnet-how-to-use-client-library/(滾動到「使用Active Directory認證庫進行用戶認證」),我用MSAL調用獲取令牌。這觸發了登錄流程,我獲得了良好的令牌,並聲稱回來,然後我把它放在一些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的東西:)
你能分享那個不起作用的LoginAsync呼叫嗎?當你說它什麼都不做時,webview是否出現? – mattchenderson
所以調用的MSAL版本彈出webview,該部分工作正常。 LoginAsync的調用與上面的示例代碼相同。但是,LoginAsync的這個調用從不顯示任何它只是默默返回或崩潰的東西。 'JObject payload = new JObject(); payload [「authenticationToken」] = ar.IdToken; var user = await mc.LoginAsync(MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,payload);' –