我的 OSX 应用程序需要基于 Kerberos 协议进行身份验证。 对于登录,我通过加载授权 URL 请求来使用 WebView(以及 MAC OSX > 10.9 的 WKWebView)。
登录按预期工作,但它保持登录状态,直到我从计算机注销或终止我的应用程序。 这意味着下次我加载授权 URL 请求时,我会自动登录,而不会提示插入我的用户名和密码。
在加载授权 URL 之前,我从 [NSHTTPCookieStorage sharedHTTPCookieStorage] 中删除 cookie。
如何退出?
您需要销毁运行 Web 浏览器的计算机上的 kerberos 票证。
/usr/bin/kdestroy
OS X 曾经有一个用于管理票证的图形界面,但我认为这早已不复存在了。您应该仅出于测试目的而执行此操作。 Kerberos 票证在 OS X 中的许多应用程序之间共享,如果您的应用程序破坏了票证,您的用户将用干草叉来追捕您......
使用以下步骤
sudo rm -rf ~/Library/Group\ Containers/group.com.apple.KerberosExtension/Library/Preferences/group.com.apple.KerberosExtension.plist; pkill -9 Kerberos扩展; pkill -9 KerberosMenuExtra; kdestroy
我的解决方案是通过以下方式关闭我的应用程序:
[NSApp 终止:self];
更好的解决方案是重新启动应用程序,但这对我来说现在就足够了。