Как вы можете преобразовать HttpServletRequest в объект OAuth2Request? - PullRequest
0 голосов
/ 07 ноября 2019

Как конвертировать HttpServletRequest в OAuth2Request, используемый spring-security-oauth?

1 Ответ

0 голосов
/ 07 ноября 2019

Извлечение параметров запроса, необходимых для конструктора OAuth2Request, из HttpServletRequest

    private static final String CLIENT_ID_PARAM = "client_id";
    private static final String REDIRECT_URI_PARAM = "redirect_uri";
    private static final String SCOPE_PARAM = "scope";
    private static final String RESPONSE_TYPE_PARAM = "response_type";

    private static OAuth2Request httpToOauthRequest(final HttpServletRequest request) {
        return new OAuth2Request(
                getQueryParameters(request),
                request.getParameter(CLIENT_ID_PARAM),
                null,
                false,
                getDelimitedSetFromParameter(request.getParameter(SCOPE_PARAM), ","),
                null,
                request.getParameter(REDIRECT_URI_PARAM),
                getDelimitedSetFromParameter(request.getParameter(RESPONSE_TYPE_PARAM), ","),
                null
        );
    }

    private static Map<String, String> getQueryParameters(HttpServletRequest request) {
        Map<String, String> queryParameters = new HashMap<>();
        String queryString = request.getQueryString();

        if (StringUtils.isEmpty(queryString)) {
            return queryParameters;
        }

        String[] parameters = queryString.split("&");

        for (String parameter : parameters) {
            String[] keyValuePair = parameter.split("=");
            queryParameters.put(keyValuePair[0], keyValuePair[1]);
        }
        return queryParameters;
    }

    private static Set<String> getDelimitedSetFromParameter(final String parameter, final String delimiter) {
        return Sets.newHashSet(Arrays.asList(parameter.split(delimiter)));
    }
...