资源服务器的作用是验证访问令牌。

使用授权策略

在该版本中不支持范围,因此,不会提供范围-资源映射,即,没有为范围提供本机支持,因此,在第 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 配置相同的虚拟服务。