Я хочу создать приложение Windows Phone 8.1 с аутентификацией Azure AD B2C. В качестве основы я использовал B2C Windows Desktop/Native Client sample.ADAL 4 (экспериментальный) ведет себя по-разному для Windows Desktop/Родной и Windows Phone с B2C
Настольное приложение работает очень хорошо. В моем WP8.1 принятии бегаю в первую задачу в точке, где я хочу, чтобы получить маркер:
result = await authContext.AcquireTokenAsync(new string[] { Globals.clientId },
null, Globals.clientId, new Uri(Globals.redirectUri),
platformParams, Globals.signInPolicy);
В то время как я получаю хороший и блестящий маркер для настольного приложения, для приложения WP8.1 (после возвращения из WebAuthenticationBroker) я получаю только ...? code = ...... response.
Я не уверен, но мне кажется, что библиотека работает в WP8.1 своего рода OIDC model, где первый вызов идет к санкционировать и 2-ое к маркера конечной точки.
Подобрав оттуда я пытался продолжить с кодом авторизации, полученные с
var result = await authContext.AcquireTokenByAuthorizationCodeAsync(authCode, new Uri(Globals.redirectUri),
credApp, new string[] { "" }, Globals.signInPolicy);
, но независимо от того, как я стараюсь передать в ClientCredential или ClientAssertion Я всегда в конечном итоге с равнины 400 Плохой запрос (подробности не возвращаются).
Кто-то, пожалуйста, сообщите мне, где я ошибаюсь, и/или назовите меня в правильном направлении.
Спасибо. Я знаю об этом, и я реализовал продолжение, как и для обычного Azure AD. Дело в том, что при возврате из продолжения AuthenticationResult отличается от приложения Desktop. –
Вы правы, что он работает в OIDC-ish. Это происходит из-за того, что код на рабочем столе управляет веб-просмотром и способен выкупить код auth, чтобы получить маркер доступа в одном вызове API (приобретаетсяToken). В случае Windows-телефона это двухэтапный подход, потому что WAB просто возвращает код auth обратно разработчику, но требует дополнительной обработки для получения фактического токена, следовательно, продолжения. Но как только вы получите результат от ContinueAcquireTokenAsync, он должен содержать токен доступа, как и вызов на рабочем столе. –
Хорошо, это имеет смысл ... Я попробую и дам обновление –