<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      keycloak~自定義rest接口

      rest資源

      對(duì)于我們集成keycloak來(lái)說(shuō),你可能會(huì)遇到它沒(méi)有實(shí)現(xiàn)的功能,這時(shí)需要對(duì)kc進(jìn)行擴(kuò)展,資源的擴(kuò)展是其中一個(gè)方面,它需要實(shí)現(xiàn)RealmResourceProviderRealmResourceProviderFactory兩個(gè)接口,然后在KC啟動(dòng)之后,它可以被注冊(cè)到IOC容器里,方便以后我們直接使用。

      KC里的擴(kuò)展是開(kāi)閉原則OCP的完美體現(xiàn),擴(kuò)展在kc里叫SPI,它通過(guò)SPI的方式實(shí)現(xiàn)對(duì)功能的擴(kuò)展,類(lèi)似于面向接口的編程,通過(guò)META-INF/services里的文件進(jìn)行注冊(cè),這類(lèi)似于spring里的META-INF/spring.factories的功能。

      例子

      • 定義一個(gè)資源工廠
      public class WeixinUserResourceProviderFactory implements RealmResourceProviderFactory {
          private static final Logger logger = Logger.getLogger(WeixinUserResourceProviderFactory.class);
      
          public WeixinUserResourceProviderFactory() {
              System.err.println("WeixinUserResourceProviderFactory.init");
          }
      
          /**
           * 資源提供者名稱會(huì)在url上體現(xiàn).
           *
           * @return
           */
          @Override
          public String getId() {
              return "weixin-api";
          }
      
          @Override
          public RealmResourceProvider create(KeycloakSession session) {
              return new WeixinUserResourceProvider(session);
          }
      
          @Override
          public void init(Scope config) {
          }
      
          @Override
          public void postInit(KeycloakSessionFactory factory) {
          }
      
          @Override
          public void close() {
          }
      
      }
      
      • 定義一個(gè)資源的具體實(shí)現(xiàn)
      public class WeixinUserResourceProvider implements RealmResourceProvider {
      
          private final KeycloakSession session;
      
          WeixinUserResourceProvider(KeycloakSession session) {
              this.session = session;
          }
      
          @Override
          public Object getResource() {
              return new WeixinUserResource(session);
          }
      
          @Override
          public void close() {
          }
      }
      
      • 具體資源里公開(kāi)的rest接口
      public class WeixinUserResource {
       
          private final KeycloakSession session;
          private final EntityManager em;
          private final RealmModel realm;
      
          public WeixinUserResource(KeycloakSession session) {
              this.session = session;
              realm = session.getContext().getRealm();
              this.em = session.getProvider(JpaConnectionProvider.class).getEntityManager();
          }
      
      
      @GET
      @NoCache
      @Produces(APPLICATION_JSON)
      @Path("user-detail")
      public UserDetail userDetail(@HeaderParam("Authorization") String authorization, @QueryParam("userId") String userId) {
      //....
      }
      

      對(duì)于上面的資源,我們可以通過(guò){kc-host}/auth/realms/{realm-name}/weixin-api/user-detail地址去訪問(wèn)它,其中,weixin-api表示當(dāng)前spi factory的ID。

      如果希望你的rest接口通過(guò)token授權(quán)才能訪問(wèn),需要讓WeixinUserResource繼承這個(gè)抽象類(lèi)AbstractSecuredLocalService

      • 向kc注冊(cè)spi
        添加文件resources/META-INF/services/org.keycloak.services.resource.RealmResourceProviderFactory,內(nèi)容如下
      keycloak.services.social.weixin.rest.WeixinUserResourceProviderFactory
      
      • 文件結(jié)構(gòu)如下
        1
      posted @ 2021-05-12 10:23  張占嶺  閱讀(1513)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲精品国产男人的天堂| 久久久久久亚洲精品a片成人| 亚洲人成网网址在线看| 亚洲最大成人av在线天堂网| 国产欧美日韩综合精品一区二区 | 成人无码特黄特黄AV片在线| 日韩精品有码中文字幕| 网友自拍视频一区二区三区| 男女性高爱潮免费网站| 亚洲男人天堂2018| 精品国产肉丝袜在线拍国语| 欧美人成在线播放网站免费| 一区二区三区成人| 亚洲AV无码专区亚洲AV桃 | 国产美女被遭强高潮免费一视频| 人摸人人人澡人人超碰97| 激情综合网激情五月伊人| 人妻系列无码专区免费| 亚洲熟妇色自偷自拍另类| 亚洲中文无码av在线| 久久亚洲国产精品五月天| 中文字幕无线码中文字幕| 无码一级视频在线| 高潮射精日本韩国在线播放 | 国产无遮挡免费视频免费| 免费AV片在线观看网址| 国产免费午夜福利在线播放| 亚洲高清免费在线观看| 亚洲男人精品青春的天堂| AV秘 无码一区二| 漂亮的保姆hd完整版免费韩国| 丁香五月婷激情综合第九色| 粗大的内捧猛烈进出小视频| 亚洲国产成人精品女久久| 国产成人亚洲欧美二区综合| 亚洲欧美偷国产日韩| 人妻激情一区二区三区四区| 乱妇乱女熟妇熟女网站| 麻豆一区二区三区蜜桃免费| 日韩高清亚洲日韩精品一区二区| 国产成人高清精品亚洲|