Неявный поток OAuth2 с C# Windows формами - PullRequest
0 голосов
/ 01 февраля 2020

Я занимаюсь разработкой приложения форм c# windows, для которого требуется аутентификация с использованием неявного потока (клиент не принимает другой поток). Как требование, мне нужно открыть системный браузер по умолчанию для аутентификации (поэтому нет встроенного веб-представления в приложении)

Я пытаюсь использовать OidcClient C# и Образцы , но я не могу заставить его работать.

Самым близким, что я получил, было использование ConsoleSystemBrowser. Но используя приведенный ниже код, я всегда получаю UnknownError с empty response.

. Я вижу в браузере id_token: http://127.0.0.1:54423/auth/signin-oidc#id_token=XXX. Как я могу это прочитать?

        var browser = new SystemBrowser();
        var redirectUri = string.Format($"http://127.0.0.1:{browser.Port}/auth/signin-oidc");

        var options = new OidcClientOptions
        {
            Authority = "https://demo.identityserver.io",
            ClientId = "implicit",
            Scope = "openid profile api",
            RedirectUri = redirectUri,
            Browser = browser
        };

        var client = new OidcClient(options);
        var state = await client.PrepareLoginAsync(new Dictionary<string, string>()
        {
            { OidcConstants.AuthorizeRequest.ResponseType, OidcConstants.ResponseTypes.IdTokenToken}
        });

        var browserOption = new BrowserOptions(state.StartUrl, redirectUri)
        {
            Timeout = TimeSpan.FromSeconds(300),
            DisplayMode = DisplayMode.Hidden,
            ResponseMode = OidcClientOptions.AuthorizeResponseMode.Redirect
        };

        var result = await browser.InvokeAsync(browserOption, default);

        result.ResultType => BrowserResultType.UnknownError
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...