1

我们正在企业内向员工部署 iOS 应用程序无线 (OTA),我们正在控制谁可以通过 SiteMinder 访问下载站点,SiteMinder 对用户进行身份验证并根据 AD 组成员身份授权他们。此身份验证过程会在设备上创建一个 cookie,指示用户已通过身份验证(并且可能他们也已获得授权),因此他们不会继续为每个请求一遍又一遍地提示。

问题是用户可以下载并安装该应用程序一次,之后再也无法再次安装该应用程序,因为他们陷入了凭据提示循环。此循环是由于 Siteminder 身份验证 cookie 已过期且未被设备上的用户代理删除或更新的事实引起的。

根据我的阅读,这是因为以“itms-Services://”开头的 OTA 安装 URL 使用的用户代理与设备上的 mobile-Safari 不同,并且不响应来自的 cookie 删除调用该网站并不会自行删除 cookie。这也意味着在 Safari 下删除 cookie、清除缓存和网站数据并不能解决问题 - Safari 不拥有 cookie。

删除应用程序(如果仍然安装)也不能解决问题,也不能重新启动设备(我还没有尝试擦除设备,也无法真正开始要求我们的用户这样做)。

那么,有没有办法告诉用户代理 itms-services 正在使用它来删除设备上的 cookie,或者对于 iOS 应用程序的 OTA 部署是否有其他解决方法?

在这种情况下,使用 Apple AppStore 不是一个可行的解决方案。
更改 SiteMinder 中的参数而不是管理 cookie 的命名以创建新的 cookie 也是不可行的,因为这会对该 SiteMinder 域支持的其他单点登录用户产生不利影响。

4

2 回答 2

3

我们最近遇到了类似的问题。我们能够通过将“允许 HEAD”添加到站点管理器中的受保护资源来修复它。Siteminder 管理员可能只启用了“GET 和 POST”作为允许的操作。

于 2012-11-16T23:05:45.753 回答
1

您可以通过以下方式删除 cookie:

 for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {

    if([[cookie domain] rangeOfString:@"mydomain.com"].location!=NSNotFound) {

        [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
    }
}
于 2012-02-16T18:11:08.927 回答