Как я могу использовать "простой" метод вызова кода 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();
Другие вопросы по тегам