Skip to main content

Posting Username and Password to Identity Server 4 to get a Token

A small and simple task, but which took me a lot of time searching the web. So now I know where to find it.
Disclaimer we will be using the Password Grant Flow you can find details here, in the link its discouraged to use this flow except maybe on legacy applications.

That aside.

Identity Server 4

Set up you identity server to use the password grant as indicated in their documentation, you can find link here .

C# Code

 var client = new HttpClient();
            client.BaseAddress = new Uri("http://localhost:5000");
            var byteArray = Encoding.Default.GetBytes("ro.client:secret");
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
            var request = new HttpRequestMessage(HttpMethod.Post, "/connect/token");

            var keyValues = new List<KeyValuePair<string, string>>();
            keyValues.Add(new KeyValuePair<string, string>("UserName", "alice"));
            keyValues.Add(new KeyValuePair<string, string>("Password", "password"));
            keyValues.Add(new KeyValuePair<string, string>("Scope", "api1"));
            keyValues.Add(new KeyValuePair<string, string>("grant_type", "password"));

            request.Content = new FormUrlEncodedContent(keyValues);
            var response = await client.SendAsync(request);

Comments

Popular posts from this blog

Messaging through a service Bus using MassTansit with Asp.Net Core 2.2 tutorial

Today we going to look at a quick tutorial on how to use MassTransit as a messaging bus for your Asp.Net core 2.2 application. I have uploaded the sample project on GitHub , if you want to follow along Spin up new project To begin spin up a new Api project, I am using Visual Studio 2019, I also added 2 nuget packages listed below.     <PackageReference Include="MassTransit.AspNetCore" Version="5.5.5" />     <PackageReference Include="MassTransit.RabbitMQ" Version="5.5.5" /> Startup.cs  In your Startup.cs file public void ConfigureServices(IServiceCollection services)         {             //Register your message consumer             services.AddScoped<OrderConsumer>();             // Register MassTransit             services.AddMassTransit(x =>         ...

Bringing together DotNet Core, Nginx and Supervisor on a linux server

We going to look at a simple tutorial on how to have your .net core site run on a linux server and make use of supervisor to start up and monitor the site. First we going to assume you have supervisor installed on the box, with nginx already running. Configure supervisor firstly browse to the folder /etc/supervisor/conf.d Inside this folder create a .conf file for example dotnettest.conf Open the dotnettest.conf and insert the following lines [program:dotnettest] command=/usr/bin/dotnet  /home/testapp/bin/Debug/netcoreapp2.2/publish/testapp.dll directory=/home/testapp/bin/Debug/netcoreapp2.2/publish/ autostart=true autorestart=true stderr_logfile=/var/log/dotnettest.err.log stdout_logfile=/var/log/dotnettest.out.log environment=ASPNETCORE_ENVIRONMENT=Production user=root stopsignal=INT For the explanation of the above you specify the name of your site by placing "program:" in front of it command you use to specify that you want dotnet which is l...

Adding File logging into .net Core 2.0 application

Will be making use of Serilog to log for our application. To get started we need the following Nuget packages. Serilog.AspNetCore Serilog.Settings.Configuration Serilog.Sinks.Console Serilog.Sinks.RollingFile StartUp.cs using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Serilog; namespace MyBlog {     public class Startup     {         public Startup(IConfiguration configuration)         {             Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger(); // <-- add for logging             Configuration = configuration;         }         public IConfiguration Configuration { get; }       ...