クライアントのAPIの更新により、HTTPBasicAuthicationメソッドがOAuth2AuthorizationBearer
ヘッダーに置き換えられました。
古いAPIを使用すると、次のようになります。
NSURLCredential *credential = [NSURLCredential credentialWithUser:self.account.username
password:self.account.token
persistence:NSURLCredentialPersistenceForSession];
NSURLProtectionSpace *space = [[NSURLProtectionSpace alloc] initWithHost:kAPIHost
port:443
protocol:NSURLProtectionSpaceHTTPS
realm:@"my-api"
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
ただし、これはBearer
ヘッダーでは機能しません。
通常は、次のようにヘッダーを追加して、自分でヘッダーを追加します。
NSString *authorization = [NSString stringWithFormat:@"Bearer %@",self.account.token];
[urlRequest setValue:authorization forHTTPHeaderField:@"Authorization"];
ただし、このソリューションの問題は、APIがほとんどの呼び出しを他のURLにリダイレクトすることです。これは、セキュリティに関係しています。がリダイレクトされた後NSURLRequest
、Authorizationヘッダーはリクエストから削除され、Bearerメソッドを追加できないため、NSURLCredentialStorage
リダイレクトされた後は認証できなくなります。
良い解決策は何でしょうか?リダイレクトをキャッチして変更することしか考えられないので、ヘッダーNSURLRequest
が含まれています。Bearer
しかし、どのように?