Local signing - API - Transaction (text) signing using Swedish BankID

Prerequisites

- BankID test client certificate (FPTestcert2_20150818_102329.p12 for test environments)

- BankID customer client certificate (for production environments)

- Access to BankID infrastructure from PhenixID Server

- Access to BankID infrastructure from Mobile device

- Access to BankID infrastructure from Client

- Signing Service installed

- The reader of this document should have some basic knowledge about PhenixID Server.

- Changes will be made to the file phenix-store.json, so please make sure to have a backup  of this file.

Authentication

It is recommended to add authentication to the API. These authentication methods are supported:

- Client certificate (recommended).
Use a reverse proxy to add client certificate authentication. Add valves to the pipe(s) to verify the certificate.

- Basic authentication
Add valves to the pipes to perform basic authentication verification.

Add local sign-api module

- Login to configuration manager

- Click the Advanced tab

- Open Modules (click on the pen)

- Add this module:

{
		"module": "com.phenixidentity~phenix-signing-api",
		"enabled": "true",
		"config": {
			"tenant": [
				{
					"id": "t1",
					"displayName": "Tenant1",
					"allowedPipe": [
						"bankidsign",
						"bankidcollect"
					]
				}
			]
		},
		"id": "signapi_module"
	}

- Click Stage Changes and Commit Changes

- Open NODE_GROUPS (click on the pen)

- Add id of the newly added module to module_refs. Example below.

{
		    "name": "default",
        "description": "Default node group (created automatically) - all nodes belong to this group",
		"config": {
			"module_refs": "signapi_module,sealapp,signapp_1,......"
		},
		"created": "2017-07-03T11:38:03.135Z",
		"id": "493afd0e-0fe8-40e4-b1a1-a24a5e2df6e2",
		"modified": "2017-07-03T14:39:43.257Z"
	}

- Click Stage Changes and Commit Changes


 

Add BankID certificate

- Add the BankID certificate (to connect to BankID backend) using the scenario Federation->Keystore->Add keystore.

- Copy the ID of the keystore. This will be used in later step.

Add pipes to trigger BankID signing and collect signature

- Click the Advanced tab

- Open Pipes (click on the pen)

- Add these pipes. Change these properties to suit your environment:

- bankid_keystore -> The id value copied in previous step.

{
"id": "bankidsign",
"description": "sign with bankid",
"valves": [
        {
          "name": "BankIDSignValve",
          "config": {
              "bankid_keystore" : "myID",
              "mode": "test",
              "version": "v6.0",
              "user_visible_data": "{{request.userVisibleData}}",
              "user_non_visible_data": "{{request.userNonVisibleData}}",
               "user_visible_data_format": "simpleMarkdownV1",
              "client_ip_request_param": "X-Forwarded-For"
        }
     }
   ]
},
{
		"id": "bankidcollect",
		"description": "Collect",
		"valves": [
			{
				"name": "BankIDCollectSignatureValve",
				"config": {
					"bankid_keystore" : "myID",
					"mode": "test",
                                        "version":"v6.0"
					"transactionID": "{{request.transactionID}}",
					"customerID": "{{request.tenant}}"
				}
			},
			{
				"name": "BankIDCompatCollectValve",
				"config": {}
			}
		]
	}

- Click Stage Changes and Commit Changes

Test

Use a HTTP rest client for testing and debugging. Follow this document to structure the HTTP requests properly.