• keycloak~为认证提供者添加配置项


    keycloak提供多种认证提供者,如用户名密码的方式,第三方社区的方式,一般来说,第三方社区的方式都是符合oauth2标准的,第三方社区像github,google,weixin之类的都需要你去申请个appid,appsecret,而这些信息我们不要硬编码,kc为我们提供了一种配置的方式,在kc管理平台中去配置它们。

    几种认证接口

    • Authenticator 认证接口
      • AbstractFormAuthenticator 表单认证
      • AbstractUsernameFormAuthenticator 用户名和密码的表单认证
      • BaseDirectGrantAuthenticator 直接认证接口
    • IdentityProvider 认证服务的标准接口,所有三方认证服务都实现它
      • AbstractIdentityProvider 证服务的抽象类
      • AbstractOAuth2IdentityProvider 提供了oauth2的标准
      • SocialIdentityProvider 第三方社区认证

    认证服务的配置

    • 为ProviderConfigProperty对象添加配置集合
       private static final List<ProviderConfigProperty> configProperties = new ArrayList<>();
       static {
    
          List<ProviderConfigProperty> config = ProviderConfigurationBuilder.create()
              .property()
              .name(DEFAULT_REGISTER_ADDRESS).label("默认注册页").helpText("不设置时,前端登录显示不显示'注册'按钮").type(ProviderConfigProperty.STRING_TYPE).add()
              .property()
              .name(FORGET_PASSWORD_ADDRESS).label("忘记密码页").helpText("不设置时,前端不显示'忘记密码'按钮").type(ProviderConfigProperty.STRING_TYPE).add()
              .property()
              .name(SHOW_AUTO_LOGIN).label("显示自动登录").type(ProviderConfigProperty.BOOLEAN_TYPE).add()
              .property()
              .name(WEIXIN_CALLBACK).label("微信回调地址").type(ProviderConfigProperty.STRING_TYPE).add()
              .build();
    
      configProperties.addAll(config);
        }
    
    • 重写可配置方法
      @Override
        public boolean isConfigurable() {
            return true;
        }
    
    • 返回配置对象
      @Override
      public List<ProviderConfigProperty> getConfigProperties() {
          return configProperties;
      }
    

    获取配置荐

    • 直接获取
    String regAddr=context.getAuthenticatorConfig().getConfig().get(DEFAULT_REGISTER_ADDRESS)
    
    • 将配置通过表单属性传递到前端ftl里
    LoginFormsProvider forms = context.form();
    if (context.getAuthenticatorConfig() != null
              && context.getAuthenticatorConfig().getConfig() != null) {
          forms.setAttribute(SHOW_AUTO_LOGIN, context.getAuthenticatorConfig().getConfig().get(SHOW_AUTO_LOGIN));
          forms.setAttribute(WEIXIN_CALLBACK, context.getAuthenticatorConfig().getConfig().get(WEIXIN_CALLBACK));
      }
    
    
    • 前端直接使用
    <span>${(account.email!'未设置')}<span>
    

  • 相关阅读:
    开源界的 5 大开源许可协议
    如何选择开源许可证?
    Ubuntu下Qt编译报错“cannot find -lGL”的解决方案
    How to Cracked Sublime Text 3 Build 3065 in Ubuntu (Linux)
    一个C语言宏展开问题
    C语言预处理运算符
    Linux线程编程之信号处理
    Linux终端多用户通信实用命令
    守护进程接收终端输入的一种变通性方法(二)
    通过printf设置Linux终端输出的颜色和显示方式
  • 原文地址:https://www.cnblogs.com/lori/p/15180761.html
Copyright © 2020-2023  润新知