gateway的授权思考

gateway的授权思考

1、看了一下若依的cloud项目。

登录:是传将authoration 这个token和当前用户绑定,然后放在redis.在登录的时候,也将相关的信息,比如校验了一下。不通过就不通过。

复制代码
@Override
public OAuth2ClientDO validOAuthClientFromCache(String clientId, String clientSecret, String authorizedGrantType,
                                                Collection<String> scopes, String redirectUri) {
    // 校验客户端存在、且开启
    OAuth2ClientDO client = getSelf().getOAuth2ClientFromCache(clientId);
    if (client == null) {
        throw exception(OAUTH2_CLIENT_NOT_EXISTS);
    }
    if (CommonStatusEnum.isDisable(client.getStatus())) {
        throw exception(OAUTH2_CLIENT_DISABLE);
    }

    // 校验客户端密钥
    if (StrUtil.isNotEmpty(clientSecret) && ObjectUtil.notEqual(client.getSecret(), clientSecret)) {
        throw exception(OAUTH2_CLIENT_CLIENT_SECRET_ERROR);
    }
    // 校验授权方式
    if (StrUtil.isNotEmpty(authorizedGrantType) && !CollUtil.contains(client.getAuthorizedGrantTypes(), authorizedGrantType)) {
        throw exception(OAUTH2_CLIENT_AUTHORIZED_GRANT_TYPE_NOT_EXISTS);
    }
    // 校验授权范围
    if (CollUtil.isNotEmpty(scopes) && !CollUtil.containsAll(client.getScopes(), scopes)) {
        throw exception(OAUTH2_CLIENT_SCOPE_OVER);
    }
    // 校验回调地址
    if (StrUtil.isNotEmpty(redirectUri) && !StrUtils.startWithAny(redirectUri, client.getRedirectUris())) {
        throw exception(OAUTH2_CLIENT_REDIRECT_URI_NOT_MATCH, redirectUri);
    }
    return client;
}

鉴权:gateway是处理,check从oauth通过rpc接口鉴权,然后获取userId,或者其他的需要的重要信息放入header上作为业务的传递。

业务:业务系统,不需要做任何鉴权,只需要做业务操作,其他的userId信息可以用userHolder类处理。

相关推荐
唐僧洗头爱飘柔95272 天前
【SpringCloud(6)】Gateway路由网关;zuul路由;gateway实现原理和架构概念;gateway工作流程;静态转发配置
spring·spring cloud·架构·gateway·请求转发·服务降级·服务雪崩
xrkhy2 天前
微服务之Gateway网关(1)
微服务·架构·gateway
无名客07 天前
SpringCloud中的网关(Gateway)的作用是什么?
spring·spring cloud·gateway
smilecold9 天前
SpringCloud 入门 - Gateway 网关与 OpenFeign 服务调用
spring cloud·gateway
INFINI Labs11 天前
Elasticsearch 备份:方案篇
大数据·elasticsearch·搜索引擎·gateway·snapshot·backup·ccr
纤瘦的鲸鱼11 天前
Spring Gateway 全面解析:从入门到进阶实践
java·spring·gateway
INFINI Labs14 天前
如何使用 INFINI Gateway 对比 ES 索引数据
大数据·elasticsearch·gateway·easysearch
m0_6515939115 天前
位置透明性、Spring Cloud Gateway与reactor响应式编程的关系
java·spring cloud·系统架构·gateway
nvd1116 天前
使用gateway api来实现GKE 的pods 从外部访问
gateway·googlecloud
罗不俷16 天前
【Kubernetes】(二十)Gateway
容器·kubernetes·gateway