OAuth 2.0 och OpenID Anslut (OIDC) i Microsofts identitetsplattform

Att känna till OAuth eller OpenID Anslut (OIDC) på protokollnivå krävs inte för att använda Microsofts identitetsplattform. Du kommer dock att stöta på protokollvillkor och begrepp när du använder identitetsplattformen för att lägga till autentisering i dina appar. När du arbetar med administrationscentret för Microsoft Entra, vår dokumentation och våra autentiseringsbibliotek kan du känna till några grunderna för din integrering och övergripande upplevelse.

Roller i OAuth 2.0

Fyra parter är vanligtvis inblandade i ett OAuth 2.0- och OpenID-Anslut autentiserings- och auktoriseringsutbyte. Dessa utbyten kallas ofta autentiseringsflöden eller autentiseringsflöden.

Diagram showing the OAuth 2.0 roles

  • Auktoriseringsserver – Microsofts identitetsplattform är auktoriseringsservern. Den kallas även för en identitetsprovider eller IdP och hanterar på ett säkert sätt slutanvändarens information, deras åtkomst och förtroenderelationerna mellan parterna i autentiseringsflödet. Auktoriseringsservern utfärdar de säkerhetstoken som dina appar och API:er använder för att bevilja, neka eller återkalla åtkomst till resurser (auktorisering) efter att användaren har loggat in (autentiserats).

  • Klient – Klienten i ett OAuth-utbyte är programmet som begär åtkomst till en skyddad resurs. Klienten kan vara en webbapp som körs på en server, en ensideswebbapp som körs i en användares webbläsare eller ett webb-API som anropar ett annat webb-API. Du ser ofta klienten som kallas klientprogram, program eller app.

  • Resursägare – Resursägaren i ett autentiseringsflöde är vanligtvis programanvändaren eller slutanvändaren i OAuth-terminologi. Slutanvändaren "äger" den skyddade resursen (deras data) som appen har åtkomst till för deras räkning. Resursägaren kan bevilja eller neka din app (klienten) åtkomst till de resurser som de äger. Din app kan till exempel anropa ett externt systems API för att hämta en användares e-postadress från profilen i systemet. Deras profildata är en resurs som slutanvändaren äger i det externa systemet och slutanvändaren kan samtycka till eller neka appens begäran om åtkomst till deras data.

  • Resursserver – Resursservern är värd för eller ger åtkomst till en resursägares data. Oftast är resursservern ett webb-API som frontar ett datalager. Resursservern förlitar sig på auktoriseringsservern för att utföra autentisering och använder information i ägartoken som utfärdats av auktoriseringsservern för att bevilja eller neka åtkomst till resurser.

Token

Parterna i ett autentiseringsflöde använder ägartoken för att säkerställa, verifiera och autentisera ett huvudnamn (användare, värd eller tjänst) och för att bevilja eller neka åtkomst till skyddade resurser (auktorisering). Ägartoken i Microsofts identitetsplattform formateras som JSON Web Tokens (JWT).

Tre typer av ägartoken används av identitetsplattformen som säkerhetstoken:

  • Åtkomsttoken – Åtkomsttoken utfärdas av auktoriseringsservern till klientprogrammet. Klienten skickar åtkomsttoken till resursservern. Åtkomsttoken innehåller de behörigheter som klienten har beviljats av auktoriseringsservern.

  • ID-token – ID-token utfärdas av auktoriseringsservern till klientprogrammet. Klienter använder ID-token när de loggar in användare och för att få grundläggande information om dem.

  • Uppdateringstoken – Klienten använder en uppdateringstoken eller RT för att begära ny åtkomst och ID-token från auktoriseringsservern. Koden ska behandla uppdateringstoken och deras stränginnehåll som känsliga data eftersom de endast är avsedda att användas av auktoriseringsservern.

Appregistrering

Klientappen behöver ett sätt att lita på de säkerhetstoken som utfärdats av Microsofts identitetsplattform. Det första steget för att upprätta förtroende är genom att registrera din app. När du registrerar din app tilldelar identitetsplattformen automatiskt vissa värden, medan andra du konfigurerar baserat på programmets typ.

Två av de vanligaste appregistreringsinställningarna är:

  • Program-ID (klient)-ID – Även kallat program-ID och klient-ID tilldelas det här värdet till din app av identitetsplattformen. Klient-ID:t identifierar din app unikt i identitetsplattformen och ingår i säkerhetstokens plattformsproblemen.
  • Omdirigerings-URI – Auktoriseringsservern använder en omdirigerings-URI för att dirigera resursägarens användaragent (webbläsare, mobilapp) till ett annat mål när interaktionen har slutförts. Till exempel när slutanvändaren har autentiserats med auktoriseringsservern. Alla klienttyper använder inte omdirigerings-URI:er.

Appens registrering innehåller också information om de autentiserings- och auktoriseringsslutpunkter som du använder i koden för att hämta ID och åtkomsttoken.

Slutpunkter

Microsofts identitetsplattform erbjuder autentiserings- och auktoriseringstjänster med standardkompatibla implementeringar av OAuth 2.0 och OpenID Anslut (OIDC) 1.0. Standardkompatibla auktoriseringsservrar som identitetsplattformen tillhandahåller en uppsättning HTTP-slutpunkter som parterna kan använda i ett autentiseringsflöde för att köra flödet.

Slutpunkts-URI:er för din app genereras automatiskt när du registrerar eller konfigurerar din app. De slutpunkter som du använder i appens kod beror på programmets typ och de identiteter (kontotyper) som ska stödjas.

Två vanliga slutpunkter är auktoriseringsslutpunkten och tokenslutpunkten. Här är exempel på slutpunkterna authorize och token :

# Authorization endpoint - used by client to obtain authorization from the resource owner.
https://login.microsoftonline.com/<issuer>/oauth2/v2.0/authorize
# Token endpoint - used by client to exchange an authorization grant or refresh token for an access token.
https://login.microsoftonline.com/<issuer>/oauth2/v2.0/token

# NOTE: These are examples. Endpoint URI format may vary based on application type,
#       sign-in audience, and Azure cloud instance (global or national cloud).

#       The {issuer} value in the path of the request can be used to control who can sign into the application. 
#       The allowed values are **common** for both Microsoft accounts and work or school accounts, 
#       **organizations** for work or school accounts only, **consumers** for Microsoft accounts only, 
#       and **tenant identifiers** such as the tenant ID or domain name.

Om du vill hitta slutpunkterna för ett program som du har registrerat går du till administrationscentret för Microsoft Entra och går till:

Identity>Applications> Appregistreringar<> YOUR-APPLICATION>>Endpoints

Nästa steg

Läs sedan om de OAuth 2.0-autentiseringsflöden som används av varje programtyp och de bibliotek som du kan använda i dina appar för att utföra dem:

Vi rekommenderar starkt att du skapar ett eget bibliotek eller råa HTTP-anrop för att köra autentiseringsflöden. Ett Microsoft-autentiseringsbibliotek är säkrare och enklare. Men om ditt scenario hindrar dig från att använda våra bibliotek eller om du bara vill lära dig mer om implementeringen av Microsofts identitetsplattform har vi protokollreferens:

  • Beviljandeflöde för auktoriseringskod – ensidesappar (SPA), mobilappar, interna program (skrivbordsprogram)
  • Flöde för klientautentiseringsuppgifter – processer på serversidan, skript, daemoner
  • Å OBO-flödets vägnar – Webb-API:er som anropar ett annat webb-API för en användares räkning
  • OpenID Anslut – Användarinloggning, utloggning och enkel inloggning (SSO)