Postman
Dersom du utvikler et API, og benytter Feide for å gjøre tilgangsstyring mot API-et, så kan Postman være et nyttig verktøy for å teste API-et.
Det er ikke helt rett frem å få et oppsett av Postman som er enkelt å jobbe med, så her følger en detaljert guide.
Dette er en guide for sluttbrukerautentiserte API-er, og ikke for system-til-system autentisering. System til system er mye enklere, og vi kan legge inn en guide på dette senere.
Forutsetninger
- Du har installert Postman, og er kjent med hvordan Postman fungerer.
- Du har opprettet en applikasjon i Feide, og har fått tildelt en klient-id og en klienthemmelighet.
- Denne klienten har fått tildelt tilgang til API-et du ønsker å teste.
- Du har registrert følgende redirect_uri for applikasjonen din:
https://oauth.pstmn.io/v1/callback
Oppsett av Postman
Opprett en collection
Opprett en collection. I dette tilfelle har jeg kalt min Tilgang Feide API.
I collection, så legger du til noen variabler:
- client_id:
<din klient id >
- client_secret:
<din klient hemmelighet>
- targetAPI1:
ID til API-et ditt
Husk å velge Save.
Lag en request for autentisering
Lag en ny request, og kall den f.eks «Initiate authentication».
- Sett URL til:
https://auth.dataporten.no/openid/userinfo
- Gå til Authorization, og velg OAuth 2.0.
- Sett add authorization data to Request Headers.
- Gå til «Configure new token»
- Token Name:
FeideAccessToken
- Grant Type: Authorization Code
- Callback URL:
https://oauth.pstmn.io/v1/callback
- Check
Authorize using browser
- Auth URL:
https://auth.dataporten.no/oauth/authorization
- Access Token URL:
https://auth.dataporten.no/oauth/token
- Client ID:
{{client_id}}
(vil hentes fra variabelen vi satt i stad) - Client Secret:
{{client_secret}}
(vil hentes fra variabelen vi satt i stad) - Client Authentication: Send as Basic Auth header
Gå deretter til Scripts og legg inn følgende Pre-request script:
const token = pm.request.auth.oauth2.get("accessToken");
pm.collectionVariables.set("feide_access_token", token);
Gå tilbake til Authorization og trykk Get New Access Token. Du vil bli sendt til Feide for å logge inn, og deretter sendt tilbake til Postman.
Vær obs på at nettleseren din må godta å åpne en popup.
Du får da opp en dialogboks med token og velger Use token.
Deretter trykker du Send, og da vil et API kall gjøres mot Feide, og du vil få tilbake informasjon om brukeren din. Samtidig vil pre-request scripet vil la inn lagre access token i en variabel.
Dette må du gjenta hver gang access token går ut, noe som skjer etter 8 timer.
Lag en ny folder for API kall
Samle alle de ulike API kallene du ønsker å gjøre ovenfor ditt eget API i en folder. Jeg har kalt min folder API Requests.
For denne folderen, sett Authorization til No Auth.
Gå deretter til Scripts, og legg inn følgende pre-request script:
const token = pm.collectionVariables.get("feide_access_token");
const targetAPI = pm.collectionVariables.get("targetAPI1");
const clientId = pm.collectionVariables.get("client_id");
const clientSecret = pm.collectionVariables.get("client_secret");
const encodedCredentials = btoa(`${clientId}:${clientSecret}`);
const audience = "https://n.feide.no/datasources/" + targetAPI;
await pm.sendRequest(
{
url: "https://auth.dataporten.no/oauth/token",
method: "POST",
header: {
Authorization: `Basic ${encodedCredentials}`,
"Content-Type": "application/x-www-form-urlencoded",
},
body: {
mode: "urlencoded",
urlencoded: [
{ key: "client_id", value: clientId },
{ key: "subject_token", value: token },
{
key: "subject_token_type",
value: "urn:ietf:params:oauth:token-type:access_token",
},
{
key: "grant_type",
value: "urn:ietf:params:oauth:grant-type:token-exchange",
},
{ key: "audience", value: audience },
],
},
},
function (err, response) {
if (err) {
console.error(err);
} else {
const data = response.json();
jwt = data.access_token;
pm.collectionVariables.set("jwt", jwt);
pm.request.headers.add({
key: "authorization",
value: "Bearer " + jwt,
});
}
}
);
Her er en skjermdumpt fra Postman:
Legg inn et API-kall
I folderen du har opprettet tidligere, så legger du inn en eller flere requests. Felles for disse er at hver gang du gjør en request, så vil det først hentes ut en ny oppdatert token, som vil beyttes i kallet mot API-et ditt.
Du trenger ikke gjøre noe spesielt for hver ny request du legger inn. Men du må ikke endre Auth type under Authorization til noe annet enn default.