【发布时间】:2020-05-17 22:54:40
【问题描述】:
我正在开发一个需要使用隐式流进行身份验证的 c# windows 窗体应用程序(客户端不接受另一个流)。根据要求,我需要打开默认系统浏览器进行身份验证(因此应用程序上没有嵌入式 Web 视图)
我正在尝试使用OidcClient C# 和Samples,但无法正常工作。
我得到的最接近的是使用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
【问题讨论】:
标签: c# oauth-2.0 implicit-flow oidc-client