Spring security 在spring security OAuth中实现动态范围

Spring security 在spring security OAuth中实现动态范围,spring-security,oauth,openid-connect,spring-security-oauth2,psd2,Spring Security,Oauth,Openid Connect,Spring Security Oauth2,Psd2,我正在开发一个开放式银行软件,银行用户(也称为客户)必须允许第三方软件拨打银行服务电话,如现金提取和查看其账户的交易,费用有限。 为了实现这种方法,应该使用OAuth协议。为了给这些web服务调用权限,定义了一些作用域,例如用于撤销许可证服务的作用域和用于查看事务服务的作用域。 重要的是,这些权限不应授予用户的所有帐户。客户将在批准页面上看到他的帐户列表。帐户应该是可选的。用户将允许第三方系统撤销或查看交易。如果第三方系统要求的范围包括现金提取,则还应包括每个账户审批页面上的金额。账目清单及其金

我正在开发一个开放式银行软件,银行用户(也称为客户)必须允许第三方软件拨打银行服务电话,如现金提取和查看其账户的交易,费用有限。 为了实现这种方法,应该使用OAuth协议。为了给这些web服务调用权限,定义了一些作用域,例如用于撤销许可证服务的作用域和用于查看事务服务的作用域。 重要的是,这些权限不应授予用户的所有帐户。客户将在批准页面上看到他的帐户列表。帐户应该是可选的。用户将允许第三方系统撤销或查看交易。如果第三方系统要求的范围包括现金提取,则还应包括每个账户审批页面上的金额。账目清单及其金额是否在范围内?我们以前不能定义这些作用域,因为每个用户都有不同的帐户

如果账户和金额不在范围内,在用户确认后如何获取并保存在审批页面上? 我更改了approve页面以显示解决此问题的帐户列表,然后尝试将这些帐户存储在Approval表中,但显然存储在ApprovalStoreUserApprovalHandler类中 updateAfterApproval方法仅过滤和存储参数列表中以前定义的范围


公共授权请求更新批准后(授权请求授权请求,
身份验证(用户身份验证){
//获得批准的范围
Set requestedScopes=authorizationRequest.getScope();
Set approvedScopes=new HashSet();
Set approvals=新HashSet();
到期日期=computeExpiry();
//存储已批准/拒绝的作用域
Map approvalParameters=authorizationRequest.getApprovalParameters();
for(字符串requestedScope:requestedScopes){
String approvalParameter=scopePrefix+requestedScope;
字符串值=approvalParameters.get(approvalParameter);
value=value==null?”:value.toLowerCase();
如果(“true”。等于(value)| | value.startsWith(“批准”)){
approvedScopes.add(requestedScope);
approvals.add(新批准(userAuthentication.getName()、authorizationRequest.getClientId(),
请求范围、有效期、批准状态(已批准);
}
否则{
approvals.add(新批准(userAuthentication.getName()、authorizationRequest.getClientId(),
请求的范围、到期日、批准状态(拒绝);
}
}
批准存储。添加批准(批准);
批准;
授权请求设置范围(批准范围);
if(approvedScopes.isEmpty()&&!requestedScopes.isEmpty()){
批准=错误;
}
否则{
批准=正确;
}
授权请求。设置已批准(已批准);
返回授权请求;
}
我想到的一种方法是自定义UserApprovalHandler以保存所有作用域。我想我可能完全误解了这个概念