ログイン後、クライアントアプリケーションがIMAPSサーバ以外のサーバにアクセスする場合、認証情報を受け渡せます。この機能はIMAPSサーバの認証機構と業務サーバとの間でSSOのような振る舞いをおこないたい場合に便利です。SSOのような振る舞いとは以下のような動作を指します。
- IMAPSサーバで認証していない場合、クライアントからのアクセスはエラーとなる。
- IMAPSサーバで認証済の場合、クライアントからのアクセスは成功する
このような振る舞いを実現するためには、以下のようにします。
- クライアントからアクセスする業務サーバ上のサーバアプリケーションに、認証モジュールを組み込む
- クライアントアプリケーションはIMAPSで認証し、業務サーバにアクセスする際には認証情報を付与してアクセスする
- 使用例
-
- (void)func {
NSURL *url = [NSURL URLWithString:接続先URL];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"GET"];
IMALoginManager *loginManager = [[IMALoginManager alloc] init];
NSError *anError = nil;
BOOL result = [loginManager setRequestAuth:request error:&anError];
if(result == NO) {
// それぞれのエラーの実装.
}
[NSURLConnection connectionWithRequest:request delegate:self];
[loginManager setRequestAuth:request error:&anError];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
IMALoginManager *loginManager = [[IMALoginManager alloc] init];
NSError *anError = nil;
BOOL result = [loginManager checkServerTimeout:response error:&error];
if(result == NO) {
// それぞれのエラーの実装.
} else {
result = [loginManager saveResponseAuth:response error:&error];
if(result == NO) {
// それぞれのエラーの実装.
}
}
}