1

我有一个调度程序每 5 分钟执行一次的作业脚本。此脚本搜索特定的工作项并更改它们。如果我手动执行脚本,它运行良好,因为那时我是“当前用户”并且有足够的权限在 svn 中写入。但是如果调度程序执行它,当前用户是:“polarion”并且他没有对 svn 的写访问,这有点奇怪但没关系。错误是:

    Caused by: com.polarion.platform.service.repository.driver.DriverException: Sorry, you do not have access to the Subversion Repository. Please contact your Polarion or Subversion administrator if you need access.
    at com.polarion.platform.repository.driver.svn.internal.JavaSvnDriver.handleSVNException(JavaSvnDriver.java:1732)
    at com.polarion.platform.repository.driver.svn.internal.JavaSvnDriver.endActivityImpl(JavaSvnDriver.java:1564)
    at com.polarion.platform.repository.driver.svn.internal.JavaSvnDriver.endActivity(JavaSvnDriver.java:1496)
    at com.polarion.platform.internal.service.repository.Connection.commit(Connection.java:736)
    ... 42 more
    Caused by: org.tmatesoft.svn.core.SVNAuthenticationException: svn: E170001: CHECKOUT of '/repo/!svn/ver/54/Sandbox/7023/.polarion/tracker/workitems/100-199/7023-193/workitem.xml': 403 Forbidden (http://localhost)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:68)

我在用户管理中找不到用户“两极分化”,所以我不能给他更多的权利。是否可以执行其他用户或类似用户的写访问?

4

1 回答 1

2

用户“polarion”在内部用于从 Polarion 的 SVN 存储库中读取信息。它通常不会写入(“提交”)到存储库,因为这通常是在登录用户的用户帐户下完成的。您的问题有两种解决方案:

  1. 快速简单的解决方法:修改 svn 访问文件,使 polarion 用户拥有对存储库的写入权限。这很容易从 Polarion 本身使用管理->用户管理->访问管理下的内置访问编辑器来实现。这可能是不安全的,因为 polarion 用户的密码在服务器上的配置文件中以明文形式存在,因此任何有权访问服务器的人都可以修改 SVN 存储库。

  2. 使用ISecurityService.doAsUser(..)函数以其他用户身份执行您的操作。通常,您可以将凭据放入 Polarion Vault 以在不暴露用户名和密码的情况下检索它们。这是一个例子:

     subject = securityService.loginUserFromVault(vaultKey, vaultKey);
     retVal = securityService.doAsUser(subject, new PrivilegedAction<Object>() {
       public Object run() {
         Object ret = null;
         try {
           ret = doAction();
           return ret;
         }
       }
     });
    

毋庸置疑,第二种方法是更安全的工作方式,但也更有效:)

于 2020-11-17T10:46:10.743 回答