# Consumer Auth Provider

> Generate consumer token to access vault services securely.

## Install Dependency

Package: consumer_auth_provider

```bash
dart pub add consumer_auth_provider
```

Check the latest version on [pub.dev](https://pub.dev/packages/affinidi_tdk_consumer_auth_provider) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk-dart/tree/main/packages/consumer_auth_provider).

## Classes and Methods

### ConsumerAuthProvider API

Used to generate Consumer Scoped Token required to authenticate consumer for Affinidi service (Vault Data Manager Client).

##### Example

```dart
import 'package:affinidi_tdk_consumer_auth_provider/affinidi_tdk_consumer_auth_provider.dart';

final seed = hexDecode(
    '',
  );

  final keyStore = InMemoryKeyStore();
  final wallet = await Bip32Wallet.fromSeed(seed, keyStore);
  final keyPair = await wallet.deriveKey(derivationPath: "m/44'/60'/0'/0'/0'");
  final didDoc = DidKey.generateDocument(keyPair.publicKey);

  final didSigner = DidSigner(
    didDocument: didDoc,
    didKeyId: didDoc.verificationMethod.first.id,
    keyPair: keyPair,
    signatureScheme: SignatureScheme.ecdsa_secp256k1_sha256,
  );
```

#### fetchConsumerToken

Return the generated Consumer Scoped Token used to authenticate the consumer to Affinidi Vault Service.

No parameters required.

Example

```dart
import 'package:affinidi_tdk_consumer_auth_provider/affinidi_tdk_consumer_auth_provider.dart';

final consumerAuthProvider = ConsumerAuthProvider(signer: didSigner);
final token = await consumerAuthProvider.fetchConsumerToken();
```
