Как я могу использовать "простой" метод вызова кода PKCE с AppAuth?
По умолчанию AppAuth отправляет S256
Запрос кода PKCE на запросы авторизации. Если мне нужно взаимодействовать с сервером, который поддерживает только plain
метод вызова кода, как я могу настроить мой запрос авторизации?
1 ответ
iOS: вы можете переопределить параметры PKCE, используя OIDAuthorizationRequest initWithConfiguration:clientId:scope:redirectURL:responseType:state:codeVerifier:codeChallenge:codeChallengeMethod:additionalParameters:
конструктор. Это можно использовать для отправки пользовательского метода PKCE (библиотека поддерживает только S256
).
// builds authentication request
NSString *codeVerifier = [OIDAuthorizationRequest generateCodeVerifier];
OIDAuthorizationRequest *request =
[[OIDAuthorizationRequest alloc] initWithConfiguration:configuration
clientId:kClientID
scope:@"openid profile"
redirectURL:redirectURI
responseType:OIDResponseTypeCode
state:[OIDAuthorizationRequest generateState]
codeVerifier:codeVerifier
codeChallenge:codeVerifier
codeChallengeMethod:@"plain"
additionalParameters:nil];
Android: вы можете переопределить параметры PKCE, добавив setCodeVerifier(String, String, String)
вашему строителю. Это можно использовать для отправки пользовательского метода PKCE (по умолчанию библиотека использует S256
на клиентах с поддержкой платформы SHA-256).
import net.openid.appauth.CodeVerifierUtil;
String codeVerifier = CodeVerifierUtil.generateRandomCodeVerifier();
AuthorizationRequest authRequest = new AuthorizationRequest.Builder(
serviceConfig,
CLIENT_ID,
AuthorizationRequest.RESPONSE_TYPE_CODE,
REDIRECT_URI)
.setScope(SCOPE)
.setCodeVerifier(codeVerifier, codeVerifier, "plain")
.build();