Rest数据源鉴权扩展

  在Rest数据源中,如果请求的接口需要鉴权处理,可已通过实现预留的抽象方法进行鉴权处理。

1.1 基础接口说明

接口名称:com.neusoft.saca.dataviz.dataquery.execute.impl.other.validate.PreParamHandler 所在jar包:dataviz-lib-query.jar

1.2 process方法

  只需要实现PreParamHandler中process抽象方法即可。在方法中需要获取授权,并把授权信息放到对应的参数中,这样在请求Rest接口时就会携带授权信息。

/**
     * 参数处理
     * 
     * @param query query参数
     * @param header header参数
     * @param body body参数
     */
    public abstract void process(Map<String, String> query, Map<String, String> header, String body);

1.2.1 传入参数说明

  query、header和body分别为请求接口中的3种参数。

1.2.2 示例代码

public class OauthAuthorizeHandler extends PreParamHandler {

    private static Logger logger = LoggerFactory.getLogger(OauthAuthorizeHandler.class);

    private OAuthAuthorize oauthAuthorize;

    @Override
    public void process(Map<String, String> query, Map<String, String> header, String body) {

        String authorizeUrl = this.getUrl();
        String clientId = this.getId();
        String clientSecret = this.getSecret();

        if (this.oauthAuthorize == null) {
            // 授权信息为空,请求授权
            this.oauthAuthorize = this.getOAuthAuthorize(authorizeUrl, clientId, clientSecret);
        } else {
            // 授权过期,刷新授权或重新申请授权
            if ((new Date()).getTime() - oauthAuthorize.getGrantTime().getTime() > oauthAuthorize.getExpiresIn()
                * 1000) {
                if (StringUtils.isEmpty(oauthAuthorize.getRefreshToken())) {// 刷新秘钥为空,重新请求授权
                    this.oauthAuthorize = this.getOAuthAuthorize(authorizeUrl, clientId, clientSecret);
                } else {
                    // 使用刷新秘钥刷新授权
                    this.oauthAuthorize =
                        refreshOAuthAuthorize(authorizeUrl, clientId, clientSecret, oauthAuthorize.getRefreshToken());
                }
            }
        }
        header.put("Authorization",
                this.oauthAuthorize.getTokenType() + " " + this.oauthAuthorize.getAccessToken());
    }
}


&emsp;&emsp;在Rest数据源设置页面中,如果在“认证请求地址”、“ID”、“Secret”中填入了对应的内容,可以使用如下代码获取页面中填入的内容。

String url = this.getUrl(); String id = this.getId(); String secret = this.getSecret();



  完成接口扩展后,需要在rest-pre-handler.yaml中添加对应配置,否则在页面中无法选择扩展的鉴权方式:

- id: oauth2.0
  name: OAuth 2.0(标准)
  className: com.neusoft.saca.dataviz.dataquery.execute.impl.other.validate.OauthAuthorizeHandler

1.3 配置说明

  系统默认只有一个oauth2.0的鉴权,如果想要添加新的鉴权方式要修改配置文件dataviz-service\WEB-INF\conf\rest-pre-handler.yaml,按照如下格式添加即可。

- id: 鉴权编码
  name: 鉴权名称
  className: 扩展的鉴权类名

1.4 使用说明

  在Rest数据源设置页面,选择启用请求鉴权,并选择鉴权方式,然后在“认证请求地址”、“ID”、“Secret”中填入鉴权需要的信息即可。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""