Dubbo鉴权

205 阅读1分钟

1.利用dubbo框架中的authToken实现p端c端鉴权。

p端

provider指定filter=authrpc,并正常对外暴露dubbo服务

<dubbo:provider filter="traceFilter,providerFilter,authrpc" registry="zk"/>
<dubbo:service interface="com.*.DubboAuthDemoService" 
  ref="dubboAuthDemoService" validation="true">
    <dubbo:method name="methodDemo" timeout="3000"/>
</dubbo:service>

方式1:在dubbo配置文件中配置p端token信息

pToken_com.*.DubboAuthDemoService.methodDemo=37c8a24f8c6d4a3d88c32c7dc6c19617

方式2:注解形式

@Slf4j
@Service("dubboAuthDemoService")
public class DubboAuthDemoServiceImpl implements DubboAuthDemoService {

    @Override
    @AuthToken(pToken = "${auth.token:37c8a24f8c6d4a3d88c32c7dc6c19617}")
    public boolean methodDemo() {
        return true;
    }
}

c端

consumer指定filter=authrpc

<dubbo:consumer filter="traceFilter,consumerFilter,authrpc" registry="zk"/>

方式1:在dubbo配置文件中配置c端token信息

cToken_com.*.DubboAuthDemoService.methodDemo=37c8a24f8c6d4a3d88c32c7dc6c19617

方式2:注解实现

@Autowired
private DubboAuthDemoService dubboAuthDemoService;

@AuthToken(cToken = "${auth.token:37c8a24f8c6d4a3d88c32c7dc6c19617}")
public void consumerMethod() {
    boolean res = dubboAuthDemoService.methodDemo();
}