zoukankan      html  css  js  c++  java
  • Spring Security 5.x Invalid Authorization Grant Type (password) for Client Registration with Id: reader

    客户端授权模式配置

    authorizationGrantType: password
    

    默认的授权请求解析不支持password模式,只支持AUTHORIZATION_CODE和IMPLICIT;
    源码如下
    DefaultOAuth2AuthorizationRequestResolver

    private OAuth2AuthorizationRequest resolve(HttpServletRequest request, String registrationId, String redirectUriAction) {
            if (registrationId == null) {
                return null;
            } else {
                ClientRegistration clientRegistration = this.clientRegistrationRepository.findByRegistrationId(registrationId);
                if (clientRegistration == null) {
                    throw new IllegalArgumentException("Invalid Client Registration with Id: " + registrationId);
                } else {
                    Map<String, Object> attributes = new HashMap();
                    attributes.put("registration_id", clientRegistration.getRegistrationId());
                    Builder builder;
                    if (AuthorizationGrantType.AUTHORIZATION_CODE.equals(clientRegistration.getAuthorizationGrantType())) {
                        builder = OAuth2AuthorizationRequest.authorizationCode();
                        Map<String, Object> additionalParameters = new HashMap();
                        if (!CollectionUtils.isEmpty(clientRegistration.getScopes()) && clientRegistration.getScopes().contains("openid")) {
                            this.addNonceParameters(attributes, additionalParameters);
                        }
    
                        if (ClientAuthenticationMethod.NONE.equals(clientRegistration.getClientAuthenticationMethod())) {
                            this.addPkceParameters(attributes, additionalParameters);
                        }
    
                        builder.additionalParameters(additionalParameters);
                    } else {
                        if (!AuthorizationGrantType.IMPLICIT.equals(clientRegistration.getAuthorizationGrantType())) {
                            throw new IllegalArgumentException("Invalid Authorization Grant Type (" + clientRegistration.getAuthorizationGrantType().getValue() + ") for Client Registration with Id: " + clientRegistration.getRegistrationId());
                        }
    
                        builder = OAuth2AuthorizationRequest.implicit();
                    }
    
                    String redirectUriStr = expandRedirectUri(request, clientRegistration, redirectUriAction);
                    OAuth2AuthorizationRequest authorizationRequest = builder.clientId(clientRegistration.getClientId()).authorizationUri(clientRegistration.getProviderDetails().getAuthorizationUri()).redirectUri(redirectUriStr).scopes(clientRegistration.getScopes()).state(this.stateGenerator.generateKey()).attributes(attributes).build();
                    return authorizationRequest;
                }
            }
        }
    
    
  • 相关阅读:
    Oracle 11gR2中启动Scott用户的方法
    Oracle 11g服务器安装详细步骤——图文教程(系统 windows server 2012 R2)
    Windows 2012 安装 Oracle 11g 报错:[INS-13001]环境不满足最低要求。
    人民币的单位的大写
    Eclipse 快捷键总结
    Eclipse常用快捷键
    四种Sandcastle方法生成c#.net帮助类帮助文档
    Sandcastle方法生成c#.net帮助类帮助文档chm
    HTML:Input元素标签的详细介绍
    MySQL: 详细的sql语句
  • 原文地址:https://www.cnblogs.com/jinit/p/14197121.html
Copyright © 2011-2022 走看看