Posted on • Originally published atcarlos.mendible.com on
Dapr: Reading local secrets with .NET 5
Now thatDapr is about to hit version 1.0.0 let me show you how easy is to read secrets with a.NET 5 console application.
Create a console application
dotnet new console -n DaprSecretSamplecd DaprSecretSample
Add a reference to the Dapr.Client library
dotnet add package Dapr.Client --prerelease
Create a Secret Store component
Create acomponents
folder and inside place a file namedsecretstore.yaml
with the following contents:
apiVersion: dapr.io/v1alpha1kind: Componentmetadata: name: starwarssecretsspec: type: secretstores.local.file metadata: - name: secretsFile value: ./secrets.json
This component will enable Dapr, and therefore your application, to read secrets from a
secrets.json
file.
Create a Secrets file
Create asecrets.json
file with the following contents:
{ "mandalorianSecret": "this is the way!"}
Replace the contents of Program.cs
Replace the contents ofProgram.cs
with the following code:
using System;using Dapr.Client;var client = new DaprClientBuilder().Build();var secret = await client.GetSecretAsync("starwarssecrets", "mandalorianSecret");Console.WriteLine($"Secret from local file: {secret["mandalorianSecret"]});
Test the program
Run the following command to test the application.
dapr run --app-id secretapp --components-path .\components\ -- dotnet run
Experiment
One of the amazing things about Dapr is that you code will be the same even if you change the underlying secret store.
In your local environment you can also try reading “secrets” from environment variables. In order to do so, replace the contents of the./componentes/secrets.yaml
file with:
apiVersion: dapr.io/v1alpha1kind: Componentmetadata: name: starwarssecretsspec: type: secretstores.local.env
Be sure to set, in your system, an environment variable namedmandalorianSecret
, for instance:
export mandalorianSecret="May The Force be with you"
and run the application again:
dapr run --app-id secretapp --components-path .\components\ -- dotnet run
Note: I recommend using the secret stores shown in this post only for development or test scenarios. For a complete list of supported secret stores check the following repo:https://github.com/dapr/components-contrib/tree/master/secretstores.
Hope it helps!
Top comments(0)
For further actions, you may consider blocking this person and/orreporting abuse