You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在现有Web项目中集成Sinadura实现文档数字签名

Hey there! Let’s wrap up the Sinadura digital signature integration for your Alfresco web app. Since you’ve already laid the groundwork with the zylklab module and Alfresco setup, here’s a step-by-step guide to get the full functionality working:

1. Double-Check Core Server-Side Setup

First, make sure your foundational pieces are solid:

  • Verify Sinadura CLI Installation: On your Linux server, confirm the Sinadura command-line tool is installed and accessible. Run sinadura-cli --version to check. If it’s not found, ensure it’s added to the system PATH, or update the Alfresco property sinadura.path in alfresco-global.properties to point directly to the executable (e.g., sinadura.path=/opt/sinadura/sinadura-cli).
  • Confirm Module Deployment: Ensure the zylklab AMP files are properly installed in Alfresco. You can verify this by running ./apply_amps.sh (in your Alfresco installation directory) to check for missing modules, then restart Alfresco with ./alfresco.sh restart.
  • Check Permissions: Make sure the Alfresco system user (typically alfresco) has execute permissions on the Sinadura CLI binary and read/write access to the temp directories used for document processing.
2. Configure Web Interface Integration

To let users trigger signatures from your web app (Alfresco Share):

  • Add a Signature Action: Edit your share-config-custom.xml file (in tomcat/shared/classes/alfresco/web-extension) to add a custom action for signing documents. Example snippet:
    <config evaluator="string-compare" condition="DocumentLibrary">
      <actions>
        <action id="document-sign-sinadura" type="javascript" label="Sign with Sinadura">
          <param name="function">onActionSinaduraSign</param>
          <permissions>
            <permission>Write</permission>
          </permissions>
          <visibility>
            <visibleItemType>cm:content</visibleItemType>
            <visibleItemType>cm:pdf</visibleItemType>
          </visibility>
        </action>
      </actions>
      <actionGroups>
        <actionGroup id="document-browse">
          <action index="100" id="document-sign-sinadura"/>
        </actionGroup>
      </actionGroups>
    </config>
    
  • Implement Frontend Trigger: Create or update the Share JavaScript file (e.g., custom-sinadura.js) to handle the button click. This script should call the Alfresco REST endpoint exposed by the zylklab module:
    function onActionSinaduraSign(record) {
      var nodeId = record.nodeRef.replace("workspace://SpacesStore/", "");
      Alfresco.util.Ajax.request({
        url: Alfresco.constants.PROXY_URI + "alfresco/api/-default-/public/alfresco/versions/1/nodes/" + nodeId + "/sign",
        method: "POST",
        successCallback: function(response) {
          Alfresco.util.PopupManager.displayMessage({text: "Document signed successfully!"});
          // Refresh document library to show signed version
          DocumentList.refresh();
        },
        failureCallback: function(response) {
          Alfresco.util.PopupManager.displayMessage({text: "Signature failed: " + response.json.error.message});
        }
      });
    }
    
  • Clear Share Cache: After updating configs, clear the Share webapp cache (delete tomcat/work/Catalina/localhost/share and restart Tomcat) to ensure the new button appears.
3. Validate Backend Signature Workflow

Test the core signature logic directly to rule out web layer issues:

  • Test Sinadura CLI Manually: Run a test signature command on a sample PDF to confirm the tool works:
    sinadura-cli sign -i /tmp/test.pdf -o /tmp/test-signed.pdf -k /path/to/user-cert.p12 -p your-cert-password
    
    If this fails, fix Sinadura or certificate issues before moving on.
  • Test the REST API: Use curl to call the Alfresco signature endpoint directly:
    curl -u admin:admin -X POST "http://your-alfresco-url/alfresco/api/-default-/public/alfresco/versions/1/nodes/{NODE_ID}/sign" \
    -H "Content-Type: application/json" \
    -d '{"certPath": "/path/to/user-cert.p12", "certPassword": "your-password"}'
    
    Check the response and verify a signed version of the document is created in Alfresco.
4. Add Signature Metadata & Validation

Ensure signed documents are properly tracked and verifiable:

  • Apply a Signed Aspect: Configure Alfresco to automatically add a cm:signed aspect to signed documents. This aspect can store metadata like signer name, timestamp, and certificate details. You can add this via a rule in Alfresco Share, or modify the zylklab module’s backend code to apply it on successful signature.
  • Enable Signature Verification: Use Sinadura CLI’s verify command to add validation functionality. Expose another REST endpoint to let users verify signed documents, or add a "Verify Signature" button in the web interface that calls sinadura-cli verify -i /path/to/signed-document.pdf.
5. End-to-End User Testing

Walk through the full flow to ensure everything works for your users:

  1. Upload a PDF to Alfresco Share
  2. Navigate to the document’s context menu and click "Sign with Sinadura"
  3. Enter certificate credentials (if your setup requires user input)
  4. Verify the signed document is generated and visible in the library
  5. Test the verification feature to confirm the signature is valid

Troubleshooting Tips

  • Check Alfresco’s alfresco.log (in tomcat/logs) for errors if the signature fails—common issues include incorrect Sinadura paths, permission denied errors, or invalid certificates.
  • If the signature button doesn’t appear, ensure your share-config-custom.xml has the correct action group and visibility rules, and that the Share cache is cleared.
  • For certificate-related issues, confirm the P12 file is valid, the password is correct, and the Alfresco user has read access to the certificate file.

内容的提问来源于stack exchange,提问作者Sree

火山引擎 最新活动