美文网首页
iOS Developer的全栈之路 - Keycloak(2)

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

作者: 西西的一天 | 来源:发表于2019-12-22 10:42 被阅读0次

    在上一节中,介绍了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查看其中的信息。

    相关文章

      网友评论

          本文标题:iOS Developer的全栈之路 - Keycloak(2)

          本文链接:https://www.haomeiwen.com/subject/ldfnnctx.html