资源服务器的作用是验证访问令牌。
使用授权策略
在该版本中不支持范围,因此,不会提供范围-资源映射,即,没有为范围提供本机支持,因此,在第 1 阶段中不会提供称为“范围”的匹配类型。
不过,范围是访问令牌中的声明(属性值对)之一。因此,可以使用属性匹配间接实现基于范围的授权匹配。
例如,如果管理员要将 /apiA 映射到 ScopeA,并将 /apiB 映射到 ScopeB,可以使用以下授权策略将其编写为属性匹配:
1+----------------------------+-------------------------------+ 2| Field | Value | 3+----------------------------+-------------------------------+ 4| authz_rules[1] | | 5| match | | 6| attr_matches[1] | | 7| attribute_name | scope | 8| attribute_value_list | | 9| match_criteria | CONTAINS | 10| match_str[1] | scopeA | 11| path | | 12| match_criteria | BEGINS_WITH | 13| match_str[1] | /apiA | 14| action | | 15| type | ALLOW_ACCESS | 16| authz_rules[2] | | 17| match | | 18| attr_matches[1] | | 19| attribute_name | scope | 20| attribute_value_list | | 21| match_criteria | CONTAINS | 22| match_str[1] | scopeB | 23| path | | 24| match_criteria | BEGINS_WITH | 25| match_str[1] | /apiB | 26| action | | 27| type | ALLOW_ACCESS | 28| authz_rules[3] | | 29| match | | 30| path | | 31| match_criteria | BEGINS_WITH | 32| match_str[1] | / | 33| action | | 34| type | HTTP_LOCAL_RESPONSE | 35| status_code | HTTP_RESPONSE_STATUS_CODE_401 | 36| authz_rules[4] | | 37| index | 1 | 38+----------------------------+-------------------------------+
使用 DataScript 和示例
也可以通过 DataScript 轻松在任何自定义操作中使用范围(即,声明的一部分)。
DataScript API |
oauth_get_claim |
描述 |
用于映射属于声明的范围 |
示例 |
要将 /apiA 映射到 ScopeA 并将 /apiB 映射到 ScopeB,请运行以下命令: path = avi.http.get_path() avi.vs.log(path) values, count = avi.http.oauth_get_claim(avi.OAUTH_ACCESS_TOKEN, "scope") for i = 1,count,1 do avi.vs.log(values[i]) avi.vs.log("checking scope11") if string.match(values[i],"scope1") and string.match(path, "api1") then allow = true avi.vs.log("api1 scope1 found ") end avi.vs.log("checking scope2") if string.match(values[i],"scope1") and string.match(path, "api2") then allow = true avi.vs.log("api2 scope 2found ") end end if allow == false then avi.http.response(403) end |
使用 DataScript 提取令牌
从 NSX Advanced Load Balancer 22.1.3 版本开始,OAuth 支持新的 DataScript 函数,即 avi.http.oauth_get_token。在建立会话后,该函数从用户的 OAuth 会话中提取令牌。有关更多信息,请参见《VMware NSX Advanced Load Balancer DataScript 指南》的 HTTP 函数一节中的 avi.http.oauth_get_token(TOKEN_TYPE)。
OIDC 中的注销支持
从 NSX Advanced Load Balancer 22.1.3 版本开始,支持客户端/信赖方 (RP) 启动的 OpenID 注销。
NSX Advanced Load Balancer(OAuth 客户端 (RP))启动请求以将用户代理重定向到 IDP 的注销端点,从而指示身份提供程序 (IDP) 注销。
有关更多信息,请参见 OIDC 中的注销支持。
注意事项和限制
仅支持授予授权代码。
不支持范围和同意屏幕。
不能为多个 IDP 配置相同的虚拟服务。