我们正在企业内部向员工部署iOS应用程序,并控制谁可以通过SiteMinder访问下载网站,air将根据AD组成员身份对用户进行身份验证和授权。此身份验证过程会在设备上创建一个cookie,指示用户已通过身份验证(可能也已授权),这样他们就不会一次又一次地收到针对每个请求的提示。
问题是,用户可以下载并安装应用程序一次,之后就再也不能安装应用程序了,因为他们陷入了凭据提示循环。此循环是由于Siteminder身份验证cookie已过期且未被设备上的用户代理删除或更新的事实造成的。
据我所知,这是因为OTA安装URL (以"itms-Services://“开头)在设备上使用与mobile-Safari不同的用户代理,并且不响应来自站点的cookie删除调用,也不会自行删除cookie。这也意味着在Safari下删除cookie、清除缓存和网站数据并不能解决这个问题-- Safari并不拥有cookie。
删除应用程序(如果它仍然安装)也不能解决问题,重启设备也不能解决问题(我还没有尝试擦除设备,也不能真的开始要求我们的用户这样做)。
那么,有没有办法告诉用户代理itms服务正在用来删除它在设备上的cookie,或者对于iOS应用程序的OTA部署,是否有其他解决方案来解决这个问题?
在这种情况下,使用苹果AppStore并不是一个可行的解决方案。
通过更改SiteMinder中的参数来控制cookie的命名以创建新cookie也是不可行的,因为这将对此SiteMinder域支持的其他单点登录用户产生不利影响。
发布于 2012-11-17 07:05:46
我们最近遇到了类似的问题。我们能够通过向siteminder中的受保护资源添加"Allow HEAD“来修复它。Siteminder管理员可能只启用了"GET和POST“作为允许的操作。
发布于 2012-02-17 02:11:09
您可以通过以下方式删除cookie:
for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
if([[cookie domain] rangeOfString:@"mydomain.com"].location!=NSNotFound) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
}https://stackoverflow.com/questions/9316347
复制相似问题