Altinn token

Hvordan hente et Altinn autentiseringstoken basert på et Maskinporten token.

REST kallet for å bytte et Maskinporten token mot et Altinn (beriket) token ser slik ut:

GET authentication/api/v1/exchange/maskinporten HTTP/1.1
Host: https://platform.tt02.altinn.no
Bearer: eyJraWQiOiJjWmswME1rbTVIQzR ... aMrDO_g
X-Altinn-EnterpriseUser-Authentication: <enkodet brukernavn:passord>
Accept: application/json

Her må man oppgi brukernavnet og passordet til virksomhetsbrukeren man opprettet. Merk at strengen har formatet brukernavn:passord og skal være Base64 enkodet. I det tilhørende .Net Core prosjektet er dette implementert slik:

public async Task<string> GetAltinnExchangeToken(string maskinportenToken)
{
    try
    {
        var basicAuthEncodedBytes = 
            System.Text.Encoding.UTF8.GetBytes($"{_username}:{_password}");
        string basicAuthEncodedString = 
            System.Convert.ToBase64String(basicAuthEncodedBytes);

        string response = await "https://platform.tt02.altinn.no"
            .AppendPathSegment("authentication/api/v1/exchange/maskinporten")
            .WithOAuthBearerToken(maskinportenToken)
            .WithHeader("X-Altinn-EnterpriseUser-Authentication",
                        basicAuthEncodedString)
            .WithHeader("Accept", "application/json")
            .GetStringAsync();
        
        return response;
    }
    catch (FlurlHttpException ex)
    {
        var status = ex.Call.Response.StatusCode;
        var message = await ex.GetResponseStringAsync();
        ...

Responsen er en streng som skal brukes som bearer token på fremtidig REST kall mot Altinn.

Se også