Проблема с перенаправлением WebAuthenticationBroker - PullRequest
0 голосов
/ 19 марта 2019

Я работаю над получением 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...