我有一个托管web浏览器控件(WebView2(的客户端应用程序。客户端应用程序配置为使用SSO,因此当前windows用户会自动登录到该应用程序。当我导航到intranet上的web应用程序时,我希望使用当前windows用户的凭据自动登录到浏览器控件中的web应用软件(支持集成的windows身份验证IWA(。
我该怎么做?
您可以尝试启用CoreWebView2EnvironmentOptions.AllowSingleSignOnUsingOSPrimaryAccount属性。这需要通过CoreWebView2Environment.CreateAsync创建一个自定义的CoreWebView 2Environment,然后使用WebView2.EnsureCoreWebView2Async使用自定义的Core WebView2Eenvironment初始化您的WebView2。在设置WebView2之前,请确保调用EnsureCoreWebView2Async。Source属性将使用默认的CoreWebView 2Environment隐式初始化WebView2。
这是我的演示项目代码,基于David的答案
private async void Form1_Load(object sender, EventArgs e)
{
var browser = new WebView2();
var options = new CoreWebView2EnvironmentOptions();
options.AllowSingleSignOnUsingOSPrimaryAccount = true;
var environtment = await CoreWebView2Environment.CreateAsync(options: options).ConfigureAwait(false);
await browser.EnsureCoreWebView2Async(environtment).ConfigureAwait(false);
Invoke((MethodInvoker)(() =>
{
browser.Dock = DockStyle.Fill;
pnlBrowser.Controls.Add(browser);
browser.Source = new Uri("https://outlook.office.com/mail/");
}));
}