Основываясь на примере here Я пытаюсь аутентифицировать логин MSA на клиенте и также проверять его на стороне службы. Разница с моей заключается в том, что я использую новый API, связанный с WebAccount, в Windows 10, а не теперь устаревший Live SDK.Постоянная аутентификация в приложении UWP и службе Azure Mobile
До сих пор я получил:
var provider = await WebAuthenticationCoreManager.FindAccountProviderAsync("https://login.microsoft.com", "consumers");
var request = new WebTokenRequest(provider, "service::wl.basic wl.emails::DELEGATION", "none");
var result = await WebAuthenticationCoreManager.RequestTokenAsync(request);
if (result.ResponseStatus == WebTokenRequestStatus.Success)
{
string token = result.ResponseData[0].Token;
//This calls my custom wrappers around the Live REST API v5 and runs successfully with this token
var acc = await LiveApi.GetLiveAccount(token);
var jtoken = new JObject
{
{"authenticationToken", token}
};
try
{
//Shouldn't this work? but raises a 401
await App.MobileService.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount, jtoken);
//Alternate method? Also raises a 401
//await App.MobileService.LoginWithMicrosoftAccountAsync(token);
}
}
Как я уже говорил в комментариях, все я получаю являются 401С.
Насколько я могу сказать, приложение настроено правильно в учетной записи DEV центра Microsoft:
- Я использую идентификатор клиента и секрет из одного приложения в Azure портала.
- Выпуск JWT не ограничен.
- URL Перенаправление имеет формат
https://{appname}.azurewebsites.net/.auth/login/microsoftaccount/callback
Authentication отлично работает, когда я переключаюсь использовать чисто на стороне сервера аутентификации. т.е.
await App.MobileService.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount);
Любые идеи? Я что-то упускаю? Любая помощь будет оценена по достоинству.
ОБНОВЛЕНО: Токен Я возвращаюсь в WebTokenRequestResult длиной 877 символов и не отображается в формате JWT с разделителями точек (.), И я вполне уверен, что это проблема. Следующая ошибка получает вход в службу, когда клиент вызывает код выше:
JWT validation failed: IDX10708: 'System.IdentityModel.Tokens.JwtSecurityTokenHandler' cannot read this string: 'EwCQAq1DBAAUGCCXc8wU/zFu9QnLdZXy+...Zz9TbuxCowNxsEPPOvXwE='.
Application: The string needs to be in compact JSON format, which is of the form: '<Base64UrlEncodedHeader>.<Base64UrlEndcodedPayload>.<OPTIONAL, Base64UrlEncodedSignature>'..
Application: 2015-12-07T17:47:09 PID[5740] Information Sending response: 401.71 Unauthorized
Какой формат является лексема в настоящее время? Может ли он быть преобразован в JWT?
По-прежнему не ближе к решению, поэтому любая помощь приветствуется.
Это правильно. Мобильные приложения еще не оптимизированы для UWP - SDK ориентирован на 8.1 и может быть использован в проектах UWP, но никаких изменений для размещения новых функций пока нет. Мы будем работать над обновлениями для этого. – mattchenderson