Mit einer Aktualisierung der API des Clients wurde die HTTPBasicAuthication-Methode durch einen OAuth2-Berechtigungsheader OAuth2 Bearer
ersetzt.OAuth 2 Bearer Authorization-Header
Mit dem alten API ich folgendes tun würde:
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];
Aber dieser mit dem Bearer
Header wird nicht funktionieren.
Jetzt normalerweise würde ich nur hinzufügen, die ich selbst Header, indem sie es wie so hinzufügen:
NSString *authorization = [NSString stringWithFormat:@"Bearer %@",self.account.token];
[urlRequest setValue:authorization forHTTPHeaderField:@"Authorization"];
Aber das Problem mit dieser Lösung ist, dass die API die meisten der Anrufe zu anderen URLs umleiten, dies zu tun mit Sicherheit. Nachdem die NSURLRequest
umgeleitet wurde, wird der Berechtigungsheader aus der Anfrage entfernt, und da ich die Bearer-Methode nicht zu der NSURLCredentialStorage
hinzufügen kann, kann sie nach der Umleitung nicht mehr authentifizieren.
Was wären gute Lösungen? Ich kann nur denken, um die Umleitung zu fangen und die NSURLRequest
zu modifizieren, also schließt sie die Bearer
Überschrift mit ein. Aber wie?
Sie sind eine Legende. Ich stieß auf das gleiche Problem und die Behandlung der Umleitung behoben es. – rawbeans