<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    使用REST API與KEYCLOAK進行OUATH2協議的登錄認證

    KEYCLOAK是一套用戶、WEB API登錄管理,授權管理的WEB應用。
    如果要訪問受KEYCLOAK保護的REST API服務,則需要夾帶一個ACCESS_TOKEN。

    前端頁面:
    • 前端頁面一般是給用戶使用的,則需要用戶輸入在KEYCLOAK中有效的用戶名和密碼,并提供CALL BAK的URL,提交給KEYCLOAK
      http://10.80.27.69:8180/auth/realms/quickstart/protocol/openid-connect/auth?client_id=app-springboot-confidential&redirect_uri=http://10.80.27.69:8183/&response_type=code&scope=openid
    • 如果KEYCLOAK驗證通過,則通知頁面重導向回調的URL,并附上code=xxx,此code則是AUTHORIZATION_CODE
      http://10.80.27.69:8183/?session_state=2ad9ab98-6c39-43a8-872f-2112c27b74df&code=3f48ce19-58f9-45d9-8c09-30d492bf4b24.2ad9ab98-6c39-43a8-872f-2112c27b74df.bd7526ef-b1bf-447f-baef-b7dfd6f0df93
    • 回調的URL對應的SERVELET,取得AUTHORIZATION_CODE,并加上client_id和client_secrect,調用KEYLOAK的取ACCESS_TOKEN的HTTP API,取得ACCESS_TOKEN,返回給頁面
      http://10.80.27.69:8180/auth/realms/quickstart/protocol/openid-connect/token
      client_id=app-springboot-confidential&client_secret=3acf7692-49cb-4c45-9943-6f3dba512dae&redirect_uri=http://10.80.27.69:8183/&grant_type=authorization_code&code=cc7ac566-90f9-404e-b88e-fa28037b07d1.591311e1-5380-46a2-9363-834f17337922.bd7526ef-b1bf-447f-baef-b7dfd6f0df93
    • 頁面保存此ACCESS_TOKEN,就可以調用后臺的各種API獲取數據
      {
          "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJGSjg2R2NGM2pUYk5MT2NvNE52WmtVQ0lVbWZZQ3FvcXRPUWVNZmJoTmxFIn0.eyJleHAiOjE2MzQwMjA4ODksImlhdCI6MTYzNDAyMDU4OSwianRpIjoiNDAwOTQ4ZmQtMGU0MS00YWRjLTlhY2MtMzczZWM2NDVhNzM5IiwiaXNzIjoiaHR0cDovLzEwLjgwLjI3LjY5OjgxODAvYXV0aC9yZWFsbXMvcXVpY2tzdGFydCIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJkZGVkMDA2YS0xY2QxLTRjODUtOTQ1MS0wMjFlZmY3OTFiMmUiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJhcHAtc3ByaW5nYm9vdC1jb25maWRlbnRpYWwiLCJzZXNzaW9uX3N0YXRlIjoiYzRlN2QzYTgtMDg2My00OTAwLTkxZmEtMGExYmFmYmRlNGU3IiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYXBwLXNwcmluZ2Jvb3QtY29uZmlkZW50aWFsIjp7InJvbGVzIjpbInVtYV9wcm90ZWN0aW9uIl19LCJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InByb2ZpbGUgZW1haWwiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsImNsaWVudElkIjoiYXBwLXNwcmluZ2Jvb3QtY29uZmlkZW50aWFsIiwiY2xpZW50SG9zdCI6IjEwLjEwLjIwLjU3IiwidXNlcl9uYW1lIjoic2VydmljZS1hY2NvdW50LWFwcC1zcHJpbmdib290LWNvbmZpZGVudGlhbCIsInByZWZlcnJlZF91c2VybmFtZSI6InNlcnZpY2UtYWNjb3VudC1hcHAtc3ByaW5nYm9vdC1jb25maWRlbnRpYWwiLCJjbGllbnRBZGRyZXNzIjoiMTAuMTAuMjAuNTcifQ.Ut6aZ6E1d4Esz0gRv2ubxdvrxmGvZLHHZepD5pnGxlqb_yZ4Q82TdGTG0iL4JJn2NH3QAU501dhzzuv6-OT9BUBKP-4ufyKv2DxSvt3GgdN30au5JsATHFyOWuuZGRBd3iWcynf9u3OJnSkHEnrIwRYatgndLzy8dy3AeqF12CI",
          "expires_in": 300,
          "refresh_expires_in": 600,
          "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI2MTlhMmJjOS0yMWIwLTRmNGMtODI4OC1kNTJmMjA3OWEzY2EifQ.eyJleHAiOjE2MzQwMjExODksImlhdCI6MTYzNDAyMDU4OSwianRpIjoiYTM0NTQ1MTYtMzc3NC00YmRlLTgzOTMtN2QyMTdkZjdkZmJkIiwiaXNzIjoiaHR0cDovLzEwLjgwLjI3LjY5OjgxODAvYXV0aC9yZWFsbXMvcXVpY2tzdGFydCIsImF1ZCI6Imh0dHA6Ly8xMC44MC4yNy42OTo4MTgwL2F1dGgvcmVhbG1zL3F1aWNrc3RhcnQiLCJzdWIiOiJkZGVkMDA2YS0xY2QxLTRjODUtOTQ1MS0wMjFlZmY3OTFiMmUiLCJ0eXAiOiJSZWZyZXNoIiwiYXpwIjoiYXBwLXNwcmluZ2Jvb3QtY29uZmlkZW50aWFsIiwic2Vzc2lvbl9zdGF0ZSI6ImM0ZTdkM2E4LTA4NjMtNDkwMC05MWZhLTBhMWJhZmJkZTRlNyIsInNjb3BlIjoicHJvZmlsZSBlbWFpbCJ9.QhjkJBGz5UvwBF7xHM7_V_yjfF0lrA_EWzAVdFf-BRI",
          "token_type": "bearer",
          "not-before-policy": 0,
          "session_state": "c4e7d3a8-0863-4900-91fa-0a1bafbde4e7",
          "scope": "profile email"
      }
    • 這就是authorization_code流程

    后端服務:
    • 如果是在一個API中要請求另外一個API的數據,不存在具體用戶的情況
    • 需提供如下參數:client_id、client_secrect和grant_type,且grant_type=client_credentials,調用KEYLOAK的取ACCESS_TOKEN的HTTP API,取得ACCESS_TOKEN
      http://10.80.27.69:8180/auth/realms/quickstart/protocol/openid-connect/token
      client_id=app-springboot-confidential&client_secret=3acf7692-49cb-4c45-9943-6f3dba512dae&grant_type=client_credentials
    • 再將此ACCESS_TOKEN以Bearer TOKEN的方式調用別的的API
    • 這就是client_credentials流程

    驗證Access Token和獲取Token元信息:
    • http://10.80.27.69:8180/auth/realms/quickstart/protocol/openid-connect/token/introspect
      client_id=app-springboot-confidential&client_secret=3acf7692-49cb-4c45-9943-6f3dba512dae
    • Access Token無效時返回:
      {
          "active": false
      }

    刷新Token:
    • http://10.80.27.69:8180/auth/realms/quickstart/protocol/openid-connect/token
      client_id=app-springboot-confidential&client_secret=3acf7692-49cb-4c45-9943-6f3dba512dae&grant_type=refresh_token&refresh_token=asdfasd
    • 返回
      {
          "access_token": "eyJhbGciOiJSUzI1NiIsIn",
          "expires_in": 300,
          "refresh_expires_in": 1800,
          "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOi",
          "token_type": "Bearer",
          "not-before-policy": 1610728470,
          "session_state": "c1273eb5-f922-420c-b23a-854be9735c1d",
          "scope": "profile email"
      }



    Reference:
    https://blog.csdn.net/nklinsirui/article/details/112706006

    https://www.baeldung.com/?s=keycloak

    https://www.doag.org/formes/pubfiles/11143470/2019-NN-Sebastien_Blanc-Easily_Secure_your_Microservices_with_Keycloak-Praesentation.pdf




    posted on 2021-10-12 14:40 paulwong 閱讀(781) 評論(0)  編輯  收藏 所屬分類: OAUTH2KEYCLOAK

    主站蜘蛛池模板: 国产国产人免费视频成69大陆| 亚洲一区精品无码| 激情小说亚洲色图| 国产亚洲精品va在线| 曰批全过程免费视频网址| 亚洲av永久无码一区二区三区| 在线观看亚洲精品福利片| 最刺激黄a大片免费网站| 亚洲av日韩av永久无码电影| 亚洲熟妇无码另类久久久| 免费观看的毛片大全| 一本到卡二卡三卡免费高| 亚洲女人初试黑人巨高清| 亚洲乱码中文字幕手机在线| 四虎最新永久免费视频| 日韩大片免费观看视频播放| 亚洲av成人综合网| 亚洲日韩一页精品发布| 蜜臀91精品国产免费观看| 无码AV片在线观看免费| 国产亚洲综合久久| 亚洲毛片免费观看| 伊人亚洲综合青草青草久热| 成人免费视频一区| 91福利视频免费观看| h在线看免费视频网站男男| 亚洲AV成人影视在线观看| 亚洲国产精品无码中文字| avtt亚洲天堂| 在线观看成人免费| 91精品国产免费| 久久免费观看视频| 国产成人 亚洲欧洲| 亚洲jjzzjjzz在线播放| 亚洲AV福利天堂一区二区三| 亚洲欧洲自拍拍偷精品 美利坚| 成年女人毛片免费播放视频m| 久久久久久曰本AV免费免费| 天黑黑影院在线观看视频高清免费| 国产成人亚洲午夜电影| 亚洲精品无码久久久久秋霞|