在Spring Security OAuth

我正在开发一种开放式银行软件,银行用户(也称为客户)必须允许第三方软件为银行帐户中的一个帐户调用银行服务,例如现金提取和交易查看(数量有限)。 要实施此方法,应使用OAuth协议。为了授予这些Web服务调用权限,定义了一些范围,例如提款许可服务的范围和查看交易服务的范围。 重要的是这些权限不应授予所有用户帐户。客户将在批准页面上看到其帐户列表。帐户应该是可选的。用户将允许第三方系统撤回或查看交易。如果第三方系统要求的范围包括现金提取,则还应在批准页面上为每个帐户包括金额。帐户清单及其金额范围吗?我们之前无法定义这些范围,因为每个用户都有一个不同的帐户。

在Spring Security OAuth

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


    public AuthorizationRequest updateAfterApproval(AuthorizationRequest authorizationRequest,Authentication userauthentication) {
            // Get the approved scopes
            Set<String> requestedScopes = authorizationRequest.getScope();
            Set<String> approvedScopes = new HashSet<String>();
            Set<Approval> approvals = new HashSet<Approval>();

            Date expiry = computeExpiry();

            // Store the scopes that have been approved / denied
            Map<String,String> approvalParameters = authorizationRequest.getapprovalParameters();
            for (String requestedScope : requestedScopes) {
                String approvalParameter = scopePrefix + requestedScope;
                String value = approvalParameters.get(approvalParameter);
                value = value == null ? "" : value.toLowerCase();
                if ("true".equals(value) || value.startsWith("approve")) {
                    approvedScopes.add(requestedScope);
                    approvals.add(new Approval(userauthentication.getName(),authorizationRequest.getclientId(),requestedScope,expiry,ApprovalStatus.APPROVED));
                }
                else {
                    approvals.add(new Approval(userauthentication.getName(),ApprovalStatus.DENIED));
                }
            }
            approvalStore.addApprovals(approvals);

            boolean approved;
            authorizationRequest.setScope(approvedScopes);
            if (approvedScopes.isEmpty() && !requestedScopes.isEmpty()) {
                approved = false;
            }
            else {
                approved = true;
            }
            authorizationRequest.setapproved(approved);
            return authorizationRequest;
        }

我想到的一种方法是自定义UserApprovalHandler以保存所有范围。我想我可能完全误解了这个概念

zmm_kj 回答:在Spring Security OAuth

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3128598.html

大家都在问