iOS Developer的全栈之路 - Keycloak(2)

在上一节中,介绍了Keycloak的一些基本概念,从这一节开始,我们一起来实操一下。整个流程大致分为如下几步,并分布在Keycloak的系列章节中:

  1. 客户端之间访问Keycloak,通过预先设置好的用户名和密码换取token;
  2. 了解Spring Security,使用spring security的kecloak adapter将Keycloak集成进入spring,来保护一些endpoint;
  3. 通过Restful API在Keycloak中注册新用户;
  4. 如何使用Keycloak的multi-factor认证
  5. 使用Keycloak来集成三方登录;

安装启动

这一部分可以按照官方教程一步一步做就好:
Keycloak下载Standalone server distribution的压缩包(当然也可以选择docker版本安装运行),解压后,在bin目录下执行./standalone.sh。该服务将启动在8080端口,不出意外的话,运行命令后可以直接访问 http://localhost:8080/auth,页面会提示去配置初始的管理员用户名和密码。

配置Realm

默认情况下,通过管理员身份登录后进入的realm为Master,client,user等信息不应该添加在Master这个realm中,添加新的realm更方便于后期的管理维护。添加方式如下图所示:


add realm.png

添加Client

接下来,添加一个client。一个client为Keycloak保护的一个server,在微服务架构下一个client就可以是一个client。切换到上一步创建好的realm,在右侧的菜单中选中Clients,再点击Create:


create client.png

填写一个Client ID,其余可以保持默认值即可。

添加测试用户

如下图所示,菜单栏中选中Users,再点击Add user,如下图所示:


add user.png

在表单内填入用户名,点击保存:


input username.png

会进入用户详情的配置页面,选中Credentials,进入配置密码的Tab,输入密码,同时关闭Temporary。Temporary通常用于管理添加用户后,给用户配置一个临时密码,当用户以用户名和这个临时密码登录时,会提示用户重置为自己的密码。

但此处的目的是通过Postman直接通过向Keycloak发送请求获取token,所以先关闭到Temporary这个开关。

input password.png

通过Postman测试

到这里为止,Keycloak的最基本配置已经完成,使用Postman来测试一下,url为 http://localhost:8080/auth/realms/foodie/protocol/openid-connect/token,path中realms之后的字符串foodie就是刚刚新增的realm。其余信息可参考下图:

postman.png

通过该请求可获取token,格式如下所示:

{
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJwbkpFanJSUWg1R2s1R3hVUm5HZldvY1hEYV9STERUYk93Ny1jMk00RjlNIn0.eyJqdGkiOiJkYzZiZjMxOC04YTliLTRlMTYtYTU3Ni0wN2ViZWVkNTk5MjQiLCJleHAiOjE1NzY5ODI0MjMsIm5iZiI6MCwiaWF0IjoxNTc2OTgyMTIzLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvYXV0aC9yZWFsbXMvZm9vZGllIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjA2N2E4NmIzLWE4ZDktNGE5OC05YzJhLTQxMDZkODFlNzhiNiIsInR5cCI6IkJlYXJlciIsImF6cCI6ImZvb2RpZSIsImF1dGhfdGltZSI6MCwic2Vzc2lvbl9zdGF0ZSI6ImIyNGZkM2RlLTA0YWQtNDFjMi05YjI1LWY2NTM2ZjhmYWRmNyIsImFjciI6IjEiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoidXNlcjEifQ.Q_VYHdszBcBRHXStUgEe95qy425BUVlXzk1kMdEx0Py40Aulvpbn-koXX_5s53jFDCEqNJXIADjRUvr-2T3rH9PVvuCeUdJMmKBjXjTbZqwrHucb55MtJDJ9QujB6J5DHKSSCNMlXIqjZ1xU5znIX4LuViYsjgfsA5p0R4_1Wtx8jddhq1nsDsAKUWpapTAO-PgjvHBF6OAAEl9gf2kjv9ssOWhVZ1V0_Ik_n6ASQWSa57utIvqYPxvin4HgUmN3X-7rsuXb0WeCOMScrhy6Ba-xG8UT-nkBXEy73wh3B7rbcaTciVA6QLgcq-pAbTMlouiJc2ukaeSdfyw9kge5pA",
    "expires_in": 300,
    "refresh_expires_in": 1800,
    "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI0MzlmYWRhMS05MWY5LTRiYmEtYjViYi1mN2FlYzc1YTVhNTEifQ.eyJqdGkiOiI0ZDU3NzBlYS1jYzIyLTRlN2QtYjQyNC05NGM5MGFhNDVlYTEiLCJleHAiOjE1NzY5ODM5MjMsIm5iZiI6MCwiaWF0IjoxNTc2OTgyMTIzLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvYXV0aC9yZWFsbXMvZm9vZGllIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL2Zvb2RpZSIsInN1YiI6IjA2N2E4NmIzLWE4ZDktNGE5OC05YzJhLTQxMDZkODFlNzhiNiIsInR5cCI6IlJlZnJlc2giLCJhenAiOiJmb29kaWUiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiJiMjRmZDNkZS0wNGFkLTQxYzItOWIyNS1mNjUzNmY4ZmFkZjciLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSJ9.IGu_ZfV2N9euHutVWTKj-GPcbz1a5ws2Ob7yYWuWwpM",
    "token_type": "bearer",
    "not-before-policy": 0,
    "session_state": "b24fd3de-04ad-41c2-9b25-f6536f8fadf7",
    "scope": "email profile"
}

此处的access_token和refresh_token均为JWT格式,可以使用jwt.io查看其中的信息。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我的梦想是穷游——用城市的公交车,去看看这个城市,甚至世界。 而这个梦想是家乡的小镇给予我的。 总以为我是土生土长...
    靳慕阅读 3,038评论 1 1
  • 触动自己的也许就是一个词一句话又或者一个旋律。 等不到你 成为我 最闪亮的星星 我依然愿意 借给你我的光 ...
    借字书友会阅读 4,744评论 16 0
  • 出门洗脸 开门扫街
    银河谜米阅读 1,475评论 0 0
  • 在我国历史上,东晋是一个非常特别的存在:由于西晋时期折腾太过,皇室司马家族的实力大衰,只能被迫与其他士族分享权力,...
    冷眼观史阅读 7,490评论 16 32
  • 洋葱打卡278天 与其说就是一场创造生命非常时刻的课程,不如说这三天两夜是场心与心的旅行。 从昨天到的啊,这个地方...
    20d43f9031f0阅读 2,481评论 0 1