Как использовать токен обновления для получения нового токена доступа с сервера идентификации 4 с клиентом Xamarin.Forms - PullRequest
1 голос
/ 10 мая 2019

Как использовать refresh_token для получения нового токена доступа с сервера идентификации в клиенте Xamarin.Forms?

Я следовал учебному пособию https://sinclairinat0r.com/2018/12/09/secure-data-access-with-identityserver4-and-xamarin-forms и создал мобильное приложение xamarin форм с аутентификацией на IS4.Я установил время жизни токена доступа на несколько минут.После истечения срока действия маркера доступа приложение не сможет получить доступ к авторизованным конечным точкам.У меня есть refresh_token, но я не знаю, как использовать его для получения нового токена доступа с сервера идентификации.

Клиент, указанный в конфигурации is4:

            new Client()
            {
                ClientId = "xamarin-client",
                ClientName = "Xamarin client",
                AllowedGrantTypes = { "authorization_code" },
                AllowedScopes = {"openid", "profile", "values-api" },
                AllowAccessTokensViaBrowser = true,
                AllowOfflineAccess = true,
                AlwaysIncludeUserClaimsInIdToken = true,
                RequirePkce = true,
                RequireClientSecret = false,
                RedirectUris = { "https://iglooidentityserver.azurewebsites.net/grants" },

                AccessTokenLifetime = 180,
            }

Аутентификатор, который я использовал:

        var oAuth = new OAuth2AuthenticatorEx(
            "xamarin-client",
            "offline_access values-api",
            new Uri("https://iglooidentityserver.azurewebsites.net/connect/authorize"),
            new Uri("https://iglooidentityserver.azurewebsites.net/grants"))
        {
            AccessTokenUrl = new Uri("https://iglooidentityserver.azurewebsites.net/connect/token"),
            ShouldEncounterOnPageLoading = false,
        };

            var presenter = new OAuthLoginPresenter();
            presenter.Completed += Presenter_Completed;
            presenter.Login(oAuth);
...