Я работаю над получением OAuth AccessToken в рамках моей программы UWP. Но, похоже, мой процесс аутентификации отличается от других (OAuth Facebook или Google и т. Д.). Примеры Microsoft или онлайн-учебники не работают.
По сути, у меня есть сервер аутентификации (от поставщика услуг), мой сервер и клиент.
Процесс должен быть:
1. Клиент попадает на аутентификационный сервер, вводит логин и пароль
2. После отправки клиент перенаправляет на мой сервер с кодом
3. Мой сервер отправляет код на сервер аутентификации, получает AccessToken и возвращает его клиенту.
Это хорошо работает, если я пытаюсь авторизоваться с Chrome.
Проблема на втором этапе. Клиент должен быть перенаправлен на http://[MyServer]/callback?code=[code]
. Но, похоже, WebAuthenticationBroker
не перенаправляет. Мой сервер не получает ни одного запроса. И WebAuthenticationResult.ResponseData.ToString()
- это предполагаемый redirect_uri, что-то вроде http://[MyServer]/callback?code=[code]
.
Мой код такой:
string startURL = string.Format("https://[AuthServer]/oauth/authorize?client_id={0}&response_type=code", Settings.ClientID);
string endURL = "http://[MyServer]/callback";
Uri startURI = new Uri(startURL);
Uri endURI = new Uri(endURL);
string result;
try
{
var webAuthenticationResult =
await WebAuthenticationBroker.AuthenticateAsync(
WebAuthenticationOptions.None,
startURI,
endURI);
switch (webAuthenticationResult.ResponseStatus)
{
case WebAuthenticationStatus.Success:
result = webAuthenticationResult.ResponseData.ToString();
break;
case WebAuthenticationStatus.ErrorHttp:
result = webAuthenticationResult.ResponseErrorDetail.ToString();
break;
default:
result = webAuthenticationResult.ResponseData.ToString();
break;
}
}
catch (Exception ex)
{
result = ex.Message;
}
return result;