LInux系统(CentOS)keycloak使用

概述

Keycloak是开源的身份及访问控制管理软件,提供开箱即用的认证、授权、单点登录、用户管理等功能。本文档的介绍包括应用的安全配置Keycloak Server管理与运行时配置

应用的安全配置:主要描述如何使用Keycloak保护应用的安全。

Keycloak Server管理与运行时配置:主要描述如何使用Keycloak管理控制台进行管理与配置。

Keycloak管理控制台的访问地址为http://{IP}:{PORT}/auth/admin。

应用的安全配置

应用是放在Tomcat中的,要想使用Keycloak对应用进行安全配置,一是需要将应用的访问地址注册在Keycloak中并为给应用设置一个唯一的标识,每个受保护的应用都需要作为一个client注册在这里;二是需要Tomcat与Keycloak版本适配

Keycloak支持OpenID Connect和SAML2.0,本文档目前仅描述Java应用中OpenID Connect的使用方法。

Keycloak保护应用的安全,需要Keycloak的Client Adapters,它是平台和框架相关的一些库,本文档目前仅描述如何在Tomcat中安装Keycloak Tomcat Adapter。

一:将应用注册在keycloak设置唯一表示ClientID,为keycloak.json中的resource准备

在左侧菜单中点击“Clients”,在页面上会看到Create按钮

LInux系统(CentOS)keycloak使用_第1张图片

添加Client

在添加客户端界面中,添加相应的内容,其中,Client ID 和 Root URL是必填项。这里的ClientID是填写应用的名称,使用英文字母,这里填写之后在后面配置keycloak.json时对应那里的resource后面的内容。对于InData中的应用,Client ID使用已经配置好的keycloak.json中的“resource”。

Client Protocol选择“openid-connect”。

Root URL填写应用的访问地址,如“http://localhost:8080/myapp”。填写完成后点击“Save”,将保存成功并打开设置页面。

LInux系统(CentOS)keycloak使用_第2张图片

二:版本适配,adapter config以及Tomcat adapter

Adapter Config

所有的Keycloak client adapters都支持使用JSON文件进行配置,通常被命名为keycloak.json,内容为:

{

  "realm": "master",

  "auth-server-url": "http://localhost:9080/auth",

  "ssl-required": "none",

  "resource": "demo",

  "public-client": true

}

这里是一些配置项的详细描述:

realm:Realm名称。

auth-server-url:Keycloak server地址,通常为http://{host}:{port}/auth。

ssl-required:与Keycloak server通信的协议,目前值为none,即使用HTTP。

resource:应用的Client ID。需要将受保护的应用注册在Keycloak Clients中,Client ID即为注册时所填写的应用的唯一标识。

public-client:值为true时,应用不需要向Keycloak server提供credentials。

对于InData平台中的应用,应用的WAR中通常已经配置了keycloak.json文件,部署时只需要修改部署环境相关的项,如auth-server-url。

Keycloak.json文件也可以从Keycloak管理控制台获取,先进入“Clients”菜单下并点击相应的client,然后在打开的页面上切换到“Installation”选项卡,最后选择“Keycloak OIDC JSON”。

LInux系统(CentOS)keycloak使用_第3张图片

关于client的注册,可参照上面的一。

Tomcat Adapter

这里的配置只要分为四步:1.安装Tomcat版本对应的Tomcat  Adapter;2.定义keycloak valve;3.修改keycloak.json;4.修改web.xml,其中前两步是对Tomcat容器直接进行的操作,后两步是对部署在Tomcat容器中的应用进行的操作

1.安装Tomcat Adapter

访问http://www.keycloak.org/archive/downloads-3.4.0.html,按照Tomcat的版本选择下载OPENID CONNECT下的Tomcat Adapter。

LInux系统(CentOS)keycloak使用_第4张图片

将adapter解压,然后放在Tomcat的lib/目录中,如下:

LInux系统(CentOS)keycloak使用_第5张图片

2.修改valve

修改${TOMCAT_HOME}/conf/context.xml,添加:

LInux系统(CentOS)keycloak使用_第6张图片

3.修改keycloak.json

将“Adapter Config”一节中的keycloak.json添加到WAR的/WEB-INF目录下,或者在已存在的文件中修改。

4.修改web.xml

如果是InData平台中的应用,通常已经配置好了。修改内容包括:

添加Keycloak认证相关的配置:





       

       All Resources

              /service/*

              *.jsp

       

       

              *

       



 



       KEYCLOAK

       indata



 



       *

如果WAR中需要使用security-sdk.jar的接口获取会话信息,还需要添加:





       SDKFilter

       sdk.security.filter.SDKFilter

       





        SDKFilter

       /*







       SDKAuthzFilter

       sdk.security.filter.SDKAuthzFilter

       





        SDKAuthzFilter

       /service/*





        SDKAuthzFilter

       *.jsp

至此,就完成了Tomcat adapter的配置。重启Tomcat使配置生效。

KeycloakServer管理与运行时配置

这边描述了Realm管理、客户端管理、用户管理和角色管理。

1.Realm管理

Keycloak预定义了“Master”realm。目前,InData中的应用大多是在Master realm下进行管理,用户也是如此。

2.客户端(Clients)管理

前面的一基本就是对客户端Clients的管理

3.用户管理

用户管理,用于管理用户、用户密码等属性,只有合法的用户才能访问受保护的应用。本节主要描述如何管理用户及其密码。

(1)查看用户

点击左侧菜单的“Users”,打开用户列表页。点击“View all Users”可显示已有的用户数据。

LInux系统(CentOS)keycloak使用_第7张图片

(2)创建用户

点击上一小节打开的用户列表页中的“Add user”,开始创建用户。Username是必填项。点击“Save”,将保存成功并打开该用户的编辑页面。

LInux系统(CentOS)keycloak使用_第8张图片

(3)用户密码

用户密码,也称用户凭证。打开用户编辑页面的“Credentials”tab页,可以设置用户的密码。

“Temporary”,点击切换为OFF。如果开启,那么该用户在首次登录时会被要求重置密码。

LInux系统(CentOS)keycloak使用_第9张图片

4.角色管理

角色标识用户的一种类型或类别。通常应用将权限分配给角色,因为直接分配给用户的方式粒度过于细微会难以管理。本节主要描述如何管理角色以及角色用户映射

(1)Realm角色

Realm级角色是定义角色的全局命名空间。点击左侧菜单“Roles”,可以看到已存在的角色数据

点击“Add Role”,填写Role Name并点击“Save”,即可创建新角色。

LInux系统(CentOS)keycloak使用_第10张图片

(2)用户角色映射

用户角色映射,即将角色分配给用户。通过“Role Mappings”,RoleMapping在users中可将角色分配给某一个用户。在Available Roles内选中角色,点击“Add selected”。

LInux系统(CentOS)keycloak使用_第11张图片

Effective Roles中显示已经生效的角色映射。将developer角色分配给Johndoe用户后,developer角色将会显示在Effective Roles中。

LInux系统(CentOS)keycloak使用_第12张图片

 

 

参考文档:http://idatalake.inspur.com/jsp/indata/docs/product/intelligentQA.jsp?li=nav-doc

你可能感兴趣的:(部署,Linux+Shell指令)