动态属性供应服务(DAPS)IDS-G/Components/IdentityProvider/DAPS/README.md at main · International-Data-Spaces-Association/IDS-G
动态属性供应服务(DAPS)是IDS生态系统中的一个基础设施组件,它能够为组织和连接器的身份添加额外的属性。
-
DAPS 可以被理解为IDS身份提供者构建块的一部分(类似于证书颁发机构)。
-
由于DAPS的信任构建服务,其用于TLS连接的X.509证书必须由颁发连接器身份的同一CA(例如,中央IDS CA)签署。
-
这些属性由DAPS嵌入到动态属性令牌(DAT)中。
动态属性供应的优势包括:
-
属性撤销不会强制证书撤销和重新颁发,即使添加了新属性也是如此。
-
通过定义范围或属性集,只有所需的属性才会包含在DAT中,从而限制信息泄露。
-
可以颁发基础证书,以便以简单的方式部署连接器。
-
一旦分配了属性,就可以创建更复杂的场景。
服务器元数据
-
符合要求的DAPS 必须根据RFC 8414提供服务器元数据。
-
连接器 应使用这些值来根据其发行者标识符确定服务器的相关OAuth配置。
特别是,以下值对连接器很重要:
-
issuer 必须与任何DAT中的
iss
声明匹配。 -
token_endpoint 是请求DAT的端点。
-
jwks_uri 是获取DAT验证密钥的端点。
示例:
假设一个数据空间的DAPS的发行者标识符为https://daps.example.org/some/path
,则元数据将位于https://daps.example.org/.well-known/oauth-authorization-server/some/path
。
通过HTTP GET请求获取该文档,将得到一个JSON格式的文档,如下所示:
JSON复制
{
"issuer": "https://daps.example.org/some/path",
"token_endpoint": "https://daps.example.org/get/me/a/token",
"jwks_uri": "https://keys.example.org/jwks",
...
}
注意,该对象可能有其他成员,其含义由相应的OAuth规范定义。这里需要注意的是,未识别的值必须被忽略。
令牌请求
-
为了请求一个动态属性令牌,连接器必须向相应的DAPS令牌端点发送一个OAuth2访问令牌请求,使用客户端凭据授权类型。
-
作为认证机制,使用JWT承载令牌类型的客户端断言。OAuth客户端ID是连接器的ID。
-
范围 确定了从DAPS请求的属性集。此版本的IDS-G定义了范围
idsc:IDS_CONNECTOR_ATTRIBUTES_ALL
,它包括DAPS可用的所有IDS属性。
示例:
以下是一个非正式且简化的DAT请求示例。换行仅用于可读性。
POST /token
Host: https://daps.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiJ9.eyJ[...]N0In0.JSQu[...]gkrx4oukYNY6eHA
&scope=idsc:IDS_CONNECTOR_ATTRIBUTES_ALL
令牌响应
-
DAPS将根据RFC 6749发出请求的DAT或错误响应。
-
访问令牌(“DAT”)本身是一个符合RFC 9068的JWS,除了标准声明外,还包含JSON-LD编码的数据,需遵循以下附加约束:
字段名称 | 附加约束 |
---|---|
@context | 必须是https://w3id.org/idsa/contexts/context.jsonld |
@type | 必须是ids:DatPayload |
securityProfile | 必须是ids:SecurityProfile 类的实例 |
-
DAT必须使用数字签名方案进行签名。建议将其有效期限制在较短的时间段内(建议:1小时)。
-
默认资源指示符在DAT中使用
idsc:IDS_CONNECTORS_ALL
,所有连接器都应接受此指示符。
附加声明 可能存在。本规范定义了以下内容:
-
referringConnector:可选的连接器主题URI。用于将连接器的标识符与其自我描述标识符(由IDS信息模型定义)连接起来。接收连接器可以使用此信息在代理处或通过解引用此URI直接请求更多信息。
-
transportCertsSha256:包含使用的传输证书的公钥,使用SHA256哈希。接收方需要通过将连接器的主机名(来自通信加密层)和使用的公私钥对与其IDS身份声明(DAT中的)关联,来连接连接器的身份。传输的公钥必须是
transportCertsSha256
值之一。否则,接收连接器必须预期请求连接器使用了错误的身份声明。 -
extendedGuarantee:如果连接器满足某个安全配置文件但偏离了一部分属性,它可以通知接收连接器其实际的安全特性。这只有在连接器在某个安全属性上达到比实际认证要求更高的水平时才可能发生。降低到较低水平是不可能的,因为这将直接使完整的认证级别无效。
示例:
以下是一个成功响应的示例:
200 This is fine
Content-Type: application/json
{
"access_token": "skdj54dkGjnb[...]lsl8723ijsdfuzticby_ch",
"scope": "idsc:IDS_CONNECTOR_ATTRIBUTES_ALL",
"token_type": "bearer",
"expires_in": "3600"
}
解码后的DAT(包括头部和负载)如下所示:
JSON复制
{
"typ": "jwt+at",
"kid": "somekid",
"alg": "RS256"
}
.
{
"iss": "https://daps.aisec.fraunhofer.de/v3",
"sub": "DD:CB:FD:0B:93:84:33:01:11:EB:5D:94:94:88:BE:78:7D:57:FC:4A:keyid:CB:8C:C7:B6:85:79:A8:23:A6:CB:15:AB:17:50:2F:E6:65:43:5D:E8",
"nbf": 1516239022,
"iat": 1516239022,
"exp": 1516239032,
"aud": ["idsc:IDS_CONNECTORS_ALL"],
"scope": "idsc:IDS_CONNECTOR_ATTRIBUTES_ALL",
"@context": "https://w3id.org/idsa/contexts/context.jsonld",
"@type": "ids:DatPayload",
"referringConnector": "http://some-connector-uri.com",
"securityProfile": "idsc:BASE_SECURITY_PROFILE",
"extendedGuarantee": "idsc:USAGE_CONTROL_POLICY_ENFORCEMENT",
"transportCertsSha256": "bacb879575730bb083f283fd5b67a8cb..."
}
.
somesignature
动态声明请求
-
连接器可以请求DAPS根据draft-spencer-oauth-claims-01发出具有指定值的DAT声明。DAT的资源接收者是
access_token
。 -
是否授予请求完全由DAPS决定,即使请求被忽略,DAT也可能成功发出。
DAPS实现 必须非常小心,不要授予会赋予连接器额外权限或允许其冒充其他连接器的请求。特别是,所有由RFC 9068定义的声明和所有JSON-LD特定的声明不得由客户端请求选择。建议DAPS实现明确白名单任何可请求的声明,并适当检查请求的值。
-
为了允许客户端指定自己的传输证书,DAPS实现应支持为
transportCertsSha256
声明指定值。
示例:
一个典型的请求可能如下所示:
POST /token
Host: https://daps.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiJ9.eyJ[...]N0In0.JSQu[...]gkrx4oukYNY6eHA
&scope=idsc:IDS_CONNECTOR_ATTRIBUTES_ALL
&claims=<Claims Request>
其中<Claims Request>
是一个编码的JSON对象,如下所示:
{
"access_token": {
"transportCertsSha256": {
"value": ["ksjdhvs87h3w4fjhsf87hkjvs", "qz47djs87h3w4fjhsf87hg57d"]
}
}
}
通俗说明与理解什么是Dynamic Attribute Provisioning Service (DAPS)?
动态属性供应服务(DAPS)是IDS生态系统中的一个基础设施组件,负责为组织和连接器的身份动态地添加额外的属性。这些属性提供了更多关于身份的详细信息,有助于在数据共享和交换过程中建立信任。以下是DAPS的关键技术点及其通俗和专业的解释。
1. 认证与授权
-
通俗说明:就像进入一个小区需要有门禁卡一样,DAPS也需要验证连接器的身份。在这里,门禁卡就像是连接器的X.509证书,只有通过了验证的连接器才能进入小区(即访问DAPS的服务)。而且,就像小区里不同的区域有不同的权限一样,DAPS也会根据连接器的权限来决定它可以访问哪些动态属性。
-
专业解释:DAPS通过验证连接器的身份保证只有授权的参与者可以访问和使用动态属性。这通常涉及使用X.509证书和公钥基础设施(PKI)来验证连接器的身份。DAPS使用OAuth 2.0协议来授权访问动态属性令牌(DAT)。连接器必须使用客户端凭据(如JWT承载令牌)来请求DAT,这确保了只有具有适当权限的连接器才能获取所需的属性。
2. 数据加密与传输安全
-
通俗说明:DAPS和连接器之间的通信就像是两个人在打电话,为了防止别人偷听,他们使用了加密电话。这样,即使有人试图窃听电话,也无法理解通话内容。而且,就像给一封重要的信件加个密封一样,DAPS给动态属性令牌(DAT)也加了个“密封”(加密),确保只有收件人(连接器)才能打开信件,看到里面的内容。
-
专业解释:DAPS使用X.509证书来建立TLS连接,确保数据在传输过程中的机密性和完整性。这样可以防止中间人攻击和数据篡改。DAT是一种JSON Web Signature (JWS),它包含了连接器的动态属性。DAT的签名确保了其内容的完整性和不可抵赖性。
3. 动态属性管理
-
通俗说明:想象一下,小区的门禁系统可以动态地更新居民的权限。如果一个居民从普通居民变成了小区管理员,系统可以动态更新他的权限,而不需要重新发放门禁卡。同样,DAPS可以动态更新连接器的属性,而无需重新颁发X.509证书。而且,就像小区的门禁系统只允许居民进入他们有权限的区域一样,DAPS也只包含所需的属性在DAT中,限制了信息泄露。
-
专业解释:DAPS允许动态更新连接器的属性,而无需重新颁发X.509证书。这减少了因属性更改而导致的证书撤销和重新颁发的需求,从而提高了系统的灵活性和安全性。通过定义属性范围或属性集,DAPS只包含所需的属性在DAT中,确保只有必要的属性被通信。
4. 安全监控与审计
-
通俗说明:就像小区里有保安巡逻一样,DAPS也有自己的“保安系统”(动态信任监控,DTM)。他们会监控小区内的活动,如是否有可疑人员(安全问题或攻击企图)。如果发现任何异常,保安会立即采取行动,确保小区的安全。而且,就像小区的保安记录所有进出小区的人员和车辆一样,DAPS也记录所有与动态属性相关的操作,这些记录可以用于调查和审计。
-
专业解释:DTM与DAPS共享信息,监控组件的行为如安全问题(漏洞)或攻击企图,有助于及时发现和响应安全威胁。DAPS记录所有与动态属性相关的操作,包括属性的分配、更新和撤销。这些日志可以用于审计和合规性检查,确保系统的安全性和透明度。
5. 安全标准与最佳实践
-
通俗说明:DAPS的实现就像是小区的门禁系统遵循国家的安全标准。这样,即使有新的安全威胁出现,系统也能及时应对。而且,小区的门禁系统可以根据需要增加更多的安全措施,比如面部识别或指纹识别,这就是安全级别的可扩展性。
-
专业解释:DAPS的实现遵循现有的安全标准和最佳实践,如RFC 8414(服务器元数据)和RFC 9068(JSON Web Token (JWT) 配置文件)。DAPS的设计允许安全级别的可扩展性,以适应不同的安全需求和场景。
动态属性供应服务(DAPS)通过多种机制确保动态属性的安全性:
1. 认证与授权
-
身份验证:DAPS 通过验证连接器的身份来确保只有授权的参与者可以访问和使用动态属性。这通常涉及使用 X.509 证书和公钥基础设施(PKI)来验证连接器的身份。
-
授权机制:DAPS 使用 OAuth 2.0 协议来授权访问动态属性令牌(DAT)。连接器必须使用客户端凭据(如 JWT 承载令牌)来请求 DAT,这确保了只有具有适当权限的连接器才能获取所需的属性。
2. 数据加密与传输安全
-
TLS 加密:DAPS 使用 X.509 证书来建立 TLS 连接,确保数据在传输过程中的机密性和完整性。这防止了中间人攻击和数据篡改。
-
动态属性令牌(DAT):DAT 是一种 JSON Web Signature (JWS),它包含了连接器的动态属性。DAT 的签名确保了其内容的完整性和不可抵赖性。
3. 动态属性管理
-
属性动态更新:DAPS 允许动态更新连接器的属性,而无需重新颁发 X.509 证书。这减少了因属性更改而导致的证书撤销和重新颁发的需求,从而提高了系统的灵活性和安全性。
-
属性范围定义:通过定义属性范围或属性集,DAPS 只包含所需的属性在 DAT 中。这限制了信息泄露,确保只有必要的属性被通信。
4. 安全监控与审计
-
动态信任监控(DTM):DTM 与 DAPS 共享信息,监控组件的行为,如安全问题(漏洞)或攻击企图。这有助于及时发现和响应安全威胁。
-
审计与日志记录:DAPS 记录所有与动态属性相关的操作,包括属性的分配、更新和撤销。这些日志可以用于审计和合规性检查,确保系统的安全性和透明度。
5. 安全标准与最佳实践
-
遵循安全标准:DAPS 的实现遵循现有的安全标准和最佳实践,如 RFC 8414(服务器元数据)和 RFC 9068(JSON Web Token (JWT) 配置文件)。
-
安全级别的可扩展性:DAPS 的设计允许安全级别的可扩展性,以适应不同的安全需求和场景。
通过这些综合的安全机制,DAPS 确保了动态属性的安全供应和管理,从而为 IDS 生态系统中的数据共享和交换提供了可靠的信任基础。
你可以简单地将DAPS的动态属性管理比作银行动态密钥,但要注意它们的应用场景和目的有所不同。
类比说明
-
银行动态密钥:主要用来进行身份验证,其生成的是一次性密码,确保用户身份的真实性,防止身份盗用。
-
DAPS动态属性管理:则是一种身份管理的手段,它可以根据参与者的授权实时动态分配信任信息和标识属性,例如安全策略和访问权限等,用于数据空间中身份标识管理并扩展其属性。
可以简单地将DAPS的动态属性管理理解为在银行动态密钥的基础上,还包含了一些额外的信息,比如实时的访问权限等。以下是对这一理解的详细解释:
相同点
-
动态更新:银行动态密钥和DAPS的动态属性管理都具有动态更新的特性。银行动态密钥会定期更新,以确保账户的安全性;DAPS的动态属性管理也可以动态地更新连接器的属性,而无需重新颁发X.509证书。
-
安全性增强:两者都通过动态变化来增强安全性。银行动态密钥通过生成一次性密码,防止密码被窃取后长期使用;DAPS通过动态属性管理,确保只有必要的属性被通信,限制信息泄露。
不同点
-
应用场景:银行动态密钥主要用于个人账户的身份验证,确保用户身份的真实性;DAPS的动态属性管理则用于数据空间中的身份标识管理,为组织和连接器的身份动态地添加额外的属性,如安全策略、访问权限等。
-
包含信息:银行动态密钥通常只包含一次性密码信息;DAPS的动态属性管理则包含更多的信息,如连接器的访问权限、安全配置文件、传输证书的哈希值等。
-
更新机制:银行动态密钥的更新通常是由银行系统自动完成,用户无需干预;DAPS的动态属性管理则需要通过特定的请求和响应机制来更新属性,连接器需要向DAPS发送请求,DAPS根据请求动态更新属性。
总结
DAPS的动态属性管理可以类比为银行动态密钥,但其应用场景和包含的信息更为复杂。DAPS不仅能够动态更新连接器的属性,还能够根据需求包含额外的信息,如访问权限等,从而在数据空间中实现更灵活、更安全的身份标识管理。