1、登录界面,在使用oauth2插件前,系统需要保证使用的用户已登录业务系统。(第2步)
2、授权界面,系统需要收集oauth2插件需要的内容,然后post到kong服务器获取token信息和跳转信息。(第3-7步)
即Kong的oauth2插件认证接口只是负责业务逻辑端的认证,不负责界面。
curl kong:8001/oauth2?client_id=XXX
示例如下:
curl https://your.service.com/oauth2/authorize \
--header "Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW" \
--data "client_id=XXX" \
--data "response_type=XXX" \ //支持code和token
--data "scope=XXX" \ //此处scope必须是在Kong插件中配置确定,可以通过空格添加多个
--data "provision_key=XXX" \ // 此处必须是在Kong插件中配置确定
--data "authenticated_userid=XXX" //授权通过的用户ID
--data "redirect_uri=XXXXXX" //如果需要跳转链接则传入。
provision_key是在Kong插件端配置的,authenticated_userid是已经被授权通过的用户ID。
{
"redirect_uri": "http://some/url"
}
{
"code": "XXXXXXXXX"
}
grant_type支持authorization_code、client_credentials、refresh_token、password
client_id与相关的redirect_uri需要在服务治理端管理。
字段名 | 字段类型 | 默认值 | 是否必填 | 说明 |
---|---|---|---|---|
scopes | string array | 用户端权限范围名称列表 | ||
mandatory_scope | boolean | true | Y | 是否必须选择一个权限范围 |
provision_key | string | Y | 唯一,授权请求必传,用于和此配置做匹配。 | |
token_expiration | number | 7200 | Y | Token有效时间,超过这个时间后需要刷新token |
enable_authorization_code | boolean | false | Y | |
enable_implicit_grant | boolean | false | Y | |
enable_client_credentials | boolean | false | Y | |
enable_password_grant | boolean | false | Y | |
hide_credentials | boolean | false | Y | 是否隐藏credentials,因为credentials是kong层面的概念,此处控制是否不传递到后端。 |
accept_http_if_already_terminated | boolean | false | 默认情况下,只接收HTTPS请求。如果不是HTTPS请求,则需要是可信IP,并且在header中存在x-forwarded-proto=https | |
anonymous | string | |||
global_credentials | boolean | false | 是否所有代理服务共用credential | |
auth_header_name | string | authorization | AccessToken从这个header中获取值 | |
refresh_token_ttl | number | 1209600 | Y |
启动插件后会自动开启如下接口接收请求。
接口名 | 接口说明 |
---|---|
/oauth2/authorize | 只支持POST形式。为Authorization Code流程提供authorization codes。或者是为 |
/oauth2/token | POST请求用于获取AccessToken |