npm package: @haus-tech/bankid-auth-plugin
Description: Support for authentication via Swedish BankID
Latest version: 1.1.6

---
name: bankid-auth-plugin
title: BankID Auth Plugin
description: Vendure plugin that integrates BankID authentication into your e-commerce platform.
version: 1.1.5
tags: [vendure, plugin, bankid, authentication]
---

# BankID Auth Plugin

The `BankID Auth Plugin` is a Vendure plugin that integrates BankID authentication into your e-commerce platform. BankID is a secure and widely used electronic identification system, primarily in Sweden, that allows users to authenticate themselves online.

## Functionality

- Enable secure customer authentication using BankID.
- Provides REST endpoints for initiating, authenticating, and canceling BankID sessions.
- Validates user IP addresses during authentication for enhanced security.
- Supports a customizable post-authentication strategy for handling successful authentications.

## Use Cases

The BankID Auth Plugin is ideal for:

- E-commerce platforms that require secure and reliable customer authentication.
- Businesses operating in Sweden or regions where BankID is widely used.
- Scenarios where IP validation and session management are critical.

## Installation

To install the `BankID Auth Plugin`, follow these steps:

1. Install the plugin package:

   ```bash
   yarn add @haus-tech/bankid-auth-plugin
   ```

   Or, if using npm:

   ```bash
   npm install @haus-tech/bankid-auth-plugin
   ```

2. Add the plugin to your Vendure configuration in `vendure-config.ts`:

   ```ts
   import { BankidAuthPlugin } from '@haus-tech/bankid-auth-plugin';

   export const config = {
     plugins: [
       BankidAuthPlugin.init({
         bankidApiUrl: 'https://api.bankid.com',
         clientCert: '/path/to/client-cert.pem',
         clientKey: '/path/to/client-key.pem',
       }),
     ],
   };
   ```

3. Restart your Vendure server.

## Usage

### Admin Configuration

The plugin does not provide a direct UI-based configuration. Instead, it is configured programmatically in the Vendure configuration file.

### REST API

The plugin provides the following REST endpoints:

- `POST /api/bankid/initiate`: Starts a BankID session.
- `POST /api/bankid/authenticate`: Authenticates a user based on an order reference.
- `POST /api/bankid/cancel`: Cancels an ongoing BankID session.

### Example Integration

To integrate BankID authentication into your storefront, use the provided REST endpoints. For example:

```ts
fetch('/api/bankid/initiate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ endUserIp: '192.168.1.1' }),
})
  .then((res) => res.json())
  .then((data) => {
    console.log(data);
  });
```

## Testing

1. Run `yarn test` to execute the e2e tests.
2. Implement additional tests to cover your specific use cases.

## Publish to NPM

1. Make sure you are [logged in to NPM](https://docs.npmjs.com/cli/v9/commands/npm-login).
2. Build the plugin:

   ```bash
   yarn build
   ```

3. Publish the plugin:

   ```bash
   yarn publish
   ```

## Resources

- [Vendure Plugin Documentation](https://www.vendure.io/docs/plugins/)
- [BankID API Documentation](https://www.bankid.com/rp-info) for detailed information on BankID's authentication services.