Attention! Translated article might be found on my English blog.

2015年5月28日木曜日

Safariと自作アプリでセッション(cookie)を共有する方法を調べた

2016/10/01 追記: 10.11から、アプリケーション間でcookieを共有できなくなった様です。
NSHTTPCookieStorage.hのsharedHTTPCookieStorageのdiscussionによると、
Starting in OS X 10.11, each app has its own sharedHTTPCookieStorage singleton, 
which will not be shared with other applications.
とのこと。むう…ユーザにいちいちログインしてもらったりするのはフィッシングサイト(アプリ)だと疑われそうで嫌ですね…。
2015/08/07 追記:WebViewを使えばSafariとセッションを共有できているようです。
共有するような設定ってどっかに有ったっけか…。
基本的に何もしなくても共有されるような気がします。
[NSHTTPCookieStorage sharedHTTPCookieStorage]というのが使えそう。

参考: Safari 5.1 cookie format specs - Stack Overflow
参考: NSHTTPCookieStorage Class Reference

なお、Safariのクッキーは~/Library/Cookies内で保存している模様。

参考: (旧) Cocoaの日々: Safari のクッキーはどう保存されているのか?

但し、現在はplistではなく、.binarycookiesというフォーマットのようです。
.binarycookiesは普通のバイナリですが、解析用スクリプトが色々あるようで、
こちらからもアプローチできそうです。

参考: Another Forensics Blog: Safari Binary Cookies - Now with more parsing power!
参考: Safari/iOS - Cookies.binarycookies reader