Gå til hovedinnhold

ASP.NET Web API

Hvordan bruke HelseID med Microsofts ASP.NET Web API

Å komme i gang med sikring av ditt API med HelseID er veldig enkelt. Eksempelet under viser et ASP.NET WebAPI som bruker en mellomvare laget for OWIN (Katana) stack som er utviklet av de samme som har lagd rammeverket vi har brukt for å utvikle kjernekomponenten i HelseID.

Hvilken mellomvare du skal bruke bruker avhenger av om APIet ditt er utviklet i .Net Core, eller om det bruker OWIN Katana stack.

For ASP.NET (Katana - OWIN) anbefaler vi:

For ASP.NET Core anbefaler vi:

I eksempelet forteller vi mellomvaren at vi bruker HelseID som autoritet. Det vil si at vi krever at APIet kun skal akseptere tokens som er utstedt av HelseID.

Vi forteller også mellomvaren at vi forventer at Access Tokens skal inneholde to scopes. Disse scopene må konfigureres på alle klienter som skal kalle APIet. Denne konfigurasjonen gjøres i HelseID.

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
        {
            Authority = "https://helseid-sts.test.nhn.no/",
            RequiredScopes = new[] { "https://mitt-api.no/patient/read", "https://mitt-api.no/patient/write" }
        });
        
    }
}

For å angi at metodene i denne controlleren skal sikres ved hjelp av mellomvaren legger vi til attributtet

[Authorize]

over klassedefinisjonen.

using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Configuration;
using System.Web.Http;

namespace HelseID.Samples.API.Controllers
{
    [Authorize]
    public class RandomTextController : ApiController
    {

        [HttpGet]
        public async Task Get()
        {
            var baseUrl = WebConfigurationManager.AppSettings["BaseUrl"];

            var url = $"{baseUrl}/GetSomeRandomText";

            var client = new HttpClient();

            var result = await client.GetAsync(url);

            result.EnsureSuccessStatusCode();

            var someText = await result.Content.ReadAsStringAsync();

            return Request.CreateResponse(HttpStatusCode.OK, someText) ;
        }
    }
}

Når tokenet er godkjent og metoden blir kalt kan du hente verdier på claims fra Access Token. Mekanismene som blir brukt for tilgangsstyring basert på informasjon i access tokens blir implementert litt forskjellig i ASP.NET WebAPI og ASP.NET Core, vi anbefaler å undersøke hva det anbefalte mønsteret er for din plattform.