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 (MobileServiceAutureicationProvider.WindowsAzureActiveDirectory, payload); ' –

답변

3

B2C의 경우 실제로 액세스 토큰 대신 ID 토큰이 반환됩니다. ar.AccessToken 속성은 null이됩니다. 이 속성은 MSAL의 최신 버전에서도 사라진 것으로 보입니다.

페이로드를 "authenticationToken"으로 업데이트하고 ar.IdToken을 대신 사용해야한다고 생각됩니다.

payload에서 "access_token"키를 계속 사용할 수 있는지 확실하지 않지만 가능한 경우일지도 모릅니다. 그렇지 않은 경우 "authenticationToken"을 대신 사용해보십시오.

+0

안녕하세요, Matt, 도와 주셔서 감사합니다. 나는 "authenticationToken"과 "authenticationToken"을 ar.IdToken (ar.Token과 같은 값)과 함께 사용해 보았고 Azure 클라이언트 lib의 배후에서 JSON 구문 분석 예외를 발생시켰다. Microsoft.WindowsAzure .MobileServices.MobileServiceAuthentication + d__25.MoveNext() [0x0007b] in : 0 이는 나에게 불투명합니다. 나는 이것에 관한 나의 여행이 잠시하게된다라고 생각한다. 아이디어가 더 있으시면 직접 사용해보십시오! –