2012-04-25 15 views
1

OAuthを使用してWeb APIにアクセスするためにRestKitを使用します。 RestKit doc raecommendationsで:iOS Keychainを使用してiPhoneにOAuthトークンを保存する方法は?

私たちは強くiOSのキーホルダーや他の安全な ストレージの方法を使用してaccess_tokenは、refresh_token、 のclientIdとclientSecretを維持することをお勧めします。

iOS Keychainを使用してシークレットトークンを保存するにはどうすればよいですか?

更新:この質問は投票されました。おそらく私は十分に自分の質問を明確にしていませんでした。 I 知られている iOSキーチェーンとAPIがあります。私の質問は、アプリケーションが出荷される前に秘密の場所(iOS Keychainまたは他の暗号化ライブラリを使用して)にtokenを保存する方法です。ユーザーが入力するはずのapiトークンであるため、どのようにして最初にトークンを初期化できますか?

+0

私はあなたの質問を書き直すべきだと思います。 –

答えて

-2

ドキュメントはright hereですが、実際に機密データ(銀行データや財務情報など)の場合はiOSキーチェーンを使用しないことを強く推奨します。セキュリティ上の脆弱性が存在するため、多くの悪用が可能ですハッカーがこのキーチェーンにアクセスする(一度デバイスへのアクセスが許可されると、脱獄のsshを使用してリモートで、またはiPhoneに直接アクセスすることによって)。

access_tokenのような非機密データを保存するには、okです。

1

NSCodingプロトコルに準拠したトークンクラス内に、さまざまなコンポーネント(accessToken、refreshTokenなど)を格納します。その後、オブジェクトをアーカイブし、キーチェーンに文字列として格納します。

当社TokenModelプロトコルは次のようになります。

@protocol TokenModel <NSCoding, NSObject> 

@property(nonatomic, strong, readonly) NSString *accessToken; 
@property(nonatomic, strong, readonly) NSDate *expirationDate; 
@property(nonatomic, assign, readonly) NSTimeInterval expiresIn; 
@property(nonatomic, strong, readonly) NSString *refreshToken; 
@property(nonatomic, strong, readonly) NSString *tokenType; 

- (BOOL)isAccessTokenExpired; 

@end 

私達は私達が格納されたオブジェクトは、NSCodingプロトコルに準拠する必要があり、同じ要件で、単にNSUserDefaultsなどとしてキーチェーンにアクセスすることができますキーチェーンサービスのヘルパーを使用しています。

@protocol KeychainService <NSObject> 

- (id)objectForKey:(id)key error:(NSError * __autoreleasing *)error; 
- (BOOL)setObject:(id)object forKey:(id)key error:(NSError * __autoreleasing *)error; 

- (BOOL)removeObjectForKey:(id)key error:(NSError * __autoreleasing *)error; 

@end 
関連する問題