C# 使用Microsoft帐户单一登录UWP应用程序未按预期工作
我正在经历一个场景,我们的UWP应用程序用户在登录时(使用其Microsoft帐户)必须始终键入密码 -期望值 用户使用其Microsoft帐户用户名和密码(例如。mrBigglesworth@mydomain.onmicrosoft.com). 正常的“保持登录”对话框会显示“不再显示此内容”复选框。用户在此对话框中选择“是”。同一用户随后登录应用程序时,不会显示登录屏幕。实际上,这创造了单一登录体验 这就是我们的应用程序在2018年4月使用现有代码更新Windows 10之前的工作方式(见下文)。据我所知,这是使事情无法进行的更新 -发生了什么事 “保持登录”对话框根本不显示。因此,用户每次都必须提供密码。即使我清除Cookie、缓存并与新用户(以前未使用过)登录,或者卸载应用程序,我仍然必须提供密码–每次。我们没有使用ADF,但在过去,当事情“起作用”时也是如此 我们的UWP应用程序是一个托管的Web应用程序,它将用户带到我们现有的Web门户。当我使用浏览器时,清除缓存,然后再次登录,一切正常,我确实看到“保持登录”对话框。因此,UWP功能缺失了一些东西 -已经做了什么 我们的UWP应用程序使用WebView控件来显示我们的门户网站。我有一个“注销用户”功能,可以删除已知域的所有cookie(见下面的列表)并清除WebView缓存。域名列表是在Fiddler工具的帮助下编制的,用于在登录我们的门户网站时监控所有URL/流量。此代码以前按预期工作(即用户注销并再次登录会生成“保持登录”对话框)。我也尝试过卸载该应用程序,但没有任何乐趣(使用右键单击卸载,就像Azure PowerShell脚本一样小-“Get-AppxPackage”?{$\uu0.IsDevelopmentMode-eq“True”}删除AppxPackage”) 下面是用于删除cookie和清除WebView缓存的C#代码片段(一些特定于业务的字符串已被更改以保护无辜者) 我可能已选中“保持登录”对话框上的“不再显示此内容”框。如果我删除cookies/卸载应用程序,这应该无关紧要,但如果适用,如何重置它 如有任何帮助,将不胜感激 其他信息: 如果您询问我的WebView代码,则我的主页摘录如下:C# 使用Microsoft帐户单一登录UWP应用程序未按预期工作,c#,webview,uwp,single-sign-on,C#,Webview,Uwp,Single Sign On,我正在经历一个场景,我们的UWP应用程序用户在登录时(使用其Microsoft帐户)必须始终键入密码 -期望值 用户使用其Microsoft帐户用户名和密码(例如。mrBigglesworth@mydomain.onmicrosoft.com). 正常的“保持登录”对话框会显示“不再显示此内容”复选框。用户在此对话框中选择“是”。同一用户随后登录应用程序时,不会显示登录屏幕。实际上,这创造了单一登录体验 这就是我们的应用程序在2018年4月使用现有代码更新Windows 10之前的工作方式(见下
<Grid x:Name="MainViewGrid" Grid.Row="1" Grid.ColumnSpan="8" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ScrollViewer HorizontalScrollMode="Disabled" VerticalScrollMode="Enabled" HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Auto">
<WebView x:Name="MainWebView" Source="{x:Bind ViewModel.WebViewSource, Mode=OneWay}" Margin="4,0,4,4"
NavigationStarting="MainWebView_NavigationStarting" NavigationCompleted="MainWebView_NavigationCompleted"
NewWindowRequested="MainWebView_NewWindowRequested" DefaultBackgroundColor="White"
ContainsFullScreenElementChanged="MainWebView_ContainsFullScreenElementChanged" RightTapped="MainWebView_RightTapped"
UnviewableContentIdentified="MainWebView_UnviewableContentIdentified" DOMContentLoaded="MainWebView_DOMContentLoaded">
</WebView>
</ScrollViewer>
</Grid>
视图模型
WebViewSource=新Uri(SkoolerResources.SkoolerLoginUrl\u元数据);
//我们应用程序的第一个URL是“”
然后重定向到login.microsoftonline.com(因为用户未经授权)
请注意,当我使用浏览器使用我们的门户网站时,一切正常。因此,WebView中的某些登录信息是否被保留-这导致了SSO问题
谢谢清除浏览器cookies将重置状态并清除“不再显示此内容”设置 “保持登录”对话框不会显示的原因包括:
如果上述方法无法为您解决此问题,请向我发送一个fiddler跟踪的登录信息,其中“保持登录”对话框未显示,我可以了解其被抑制的原因。我已尝试使用webview控件加载包含Micrsoft登录模块的网站。即使重新加载页面,它也能工作。你能展示更多关于我们网站的信息吗?你好,尼科。谢谢你的评论。当你说“它有效”时,你的意思是你可以成功登录吗?我也可以。问题是登录到“”后,我没有看到“保持登录”对话框。我相信,这使得SSO无法工作。@'Nico Zhu-MSFT'-我在我的帖子中添加了其他信息。您是否在浏览器中测试门户网站?嗨。我主要对用户的SSO体验感兴趣。即,用户不应获得“输入凭据/密码”对话框。这在过去运行良好-用户在应用程序安装后第一次登录;随后的应用程序发布将直接将他们带到我们的主登录页。现在,它继续显示凭证/密码对话框。我的意思是,这与“保持登录”对话框有关,因为这是我在通过普通浏览器访问门户时看到的唯一区别&通过UWP应用程序中的WebView访问门户。我会设法找到小提琴手的踪迹。嗨,抱歉耽搁了。根据要求,我已从Fiddler处收集了会话跟踪。这里是链接:为了比较,我还加载了一个浏览器访问Web应用程序的跟踪。Web应用程序的行为符合预期(当我清除浏览器缓存时,会显示“保持登录”对话框)。链接:想知道是否有人有时间调查此事并提供任何信息。或者如果有什么我需要做的。非常感谢。
<Grid x:Name="MainViewGrid" Grid.Row="1" Grid.ColumnSpan="8" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ScrollViewer HorizontalScrollMode="Disabled" VerticalScrollMode="Enabled" HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Auto">
<WebView x:Name="MainWebView" Source="{x:Bind ViewModel.WebViewSource, Mode=OneWay}" Margin="4,0,4,4"
NavigationStarting="MainWebView_NavigationStarting" NavigationCompleted="MainWebView_NavigationCompleted"
NewWindowRequested="MainWebView_NewWindowRequested" DefaultBackgroundColor="White"
ContainsFullScreenElementChanged="MainWebView_ContainsFullScreenElementChanged" RightTapped="MainWebView_RightTapped"
UnviewableContentIdentified="MainWebView_UnviewableContentIdentified" DOMContentLoaded="MainWebView_DOMContentLoaded">
</WebView>
</ScrollViewer>
</Grid>