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

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

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

    paulwong

    使用REST API與KEYCLOAK進(jìn)行OUATH2協(xié)議的登錄認(rèn)證

    KEYCLOAK是一套用戶、WEB API登錄管理,授權(quán)管理的WEB應(yīng)用。
    如果要訪問(wèn)受KEYCLOAK保護(hù)的REST API服務(wù),則需要夾帶一個(gè)ACCESS_TOKEN。

    前端頁(yè)面:
    • 前端頁(yè)面一般是給用戶使用的,則需要用戶輸入在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驗(yàn)證通過(guò),則通知頁(yè)面重導(dǎo)向回調(diào)的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
    • 回調(diào)的URL對(duì)應(yīng)的SERVELET,取得AUTHORIZATION_CODE,并加上client_id和client_secrect,調(diào)用KEYLOAK的取ACCESS_TOKEN的HTTP API,取得ACCESS_TOKEN,返回給頁(yè)面
      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
    • 頁(yè)面保存此ACCESS_TOKEN,就可以調(diào)用后臺(tái)的各種API獲取數(shù)據(jù)
      {
          "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流程

    后端服務(wù):
    • 如果是在一個(gè)API中要請(qǐng)求另外一個(gè)API的數(shù)據(jù),不存在具體用戶的情況
    • 需提供如下參數(shù):client_id、client_secrect和grant_type,且grant_type=client_credentials,調(diào)用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的方式調(diào)用別的的API
    • 這就是client_credentials流程

    驗(yàn)證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無(wú)效時(shí)返回:
      {
          "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) 評(píng)論(0)  編輯  收藏 所屬分類: OAUTH2KEYCLOAK

    主站蜘蛛池模板: 成人爽a毛片免费| 老司机69精品成免费视频| 黄色毛片免费观看| 精选影视免费在线 | 日韩免费观看一区| 午夜性色一区二区三区免费不卡视频| 成人毛片免费播放| 亚洲毛片网址在线观看中文字幕| 亚洲毛片αv无线播放一区| 亚洲网站视频在线观看| 亚洲AV综合永久无码精品天堂| 一级做受视频免费是看美女| 香港a毛片免费观看| 成人免费无遮挡无码黄漫视频| 一本久久综合亚洲鲁鲁五月天| 亚洲VA成无码人在线观看天堂 | 成人特黄a级毛片免费视频| 免费一级做a爰片性色毛片| 国产∨亚洲V天堂无码久久久| 亚洲av专区无码观看精品天堂| 无码天堂va亚洲va在线va| 国产激情免费视频在线观看 | 亚洲精品视频在线观看免费| 国产日产成人免费视频在线观看| 国产亚洲精品福利在线无卡一| 亚洲最大视频网站| 免费无码婬片aaa直播表情| 99视频免费观看| jjzz亚洲亚洲女人| 亚洲精品在线视频观看| 免费人成网站永久| 91网站免费观看| 国产亚洲精品高清在线| 亚洲国产成a人v在线观看| 国产在线观看免费av站| 国语成本人片免费av无码| 亚洲色精品88色婷婷七月丁香 | 亚洲精品福利网站| 国产精品1024在线永久免费 | 人妻视频一区二区三区免费| 在线A亚洲老鸭窝天堂|