The Microsoft Authentication Library (MSAL) supports several authorization grants and associated token flows for use by different application types and scenarios.
| Authentication flow | Enables | Supported application types |
|-----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Authorization code](#authorization-code) | User sign-in and access to web APIs on behalf of the user. | [Desktop](scenario-desktop-app-registration.md) <br /> [Mobile](scenario-mobile-app-registration.md) <br /> [Single-page app (SPA)](scenario-spa-app-registration.md) (requires PKCE) <br /> [Web](scenario-web-api-call-api-app-registration.md) |
| [Client credentials](#client-credentials) | Access to web APIs by using the identity of the application itself. Typically used for server-to-server communication and automated scripts requiring no user interaction. | [Daemon](scenario-daemon-app-registration.md) |
| [Device code](#device-code) | User sign-in and access to web APIs on behalf of the user on input-constrained devices like smart TVs and IoT devices. Also used by command line interface (CLI) applications. | [Desktop, Mobile](scenario-desktop-acquire-token-device-code-flow.md) |
| [Implicit grant](#implicit-grant) | User sign-in and access to web APIs on behalf of the user. *Do not use this flow - use authorization code with PKCE instead.* | * [Single-page app (SPA)](scenario-spa-app-registration.md) <br /> * [Web](scenario-web-api-call-api-app-registration.md)
| [On-behalf-of (OBO)](#on-behalf-of-obo) | Access from an "upstream" web API to a "downstream" web API on behalf of the user. The user's identity and delegated permissions are passed through to the downstream API from the upstream API. | [Web API](scenario-web-api-call-api-app-registration.md) |
| [Username/password (ROPC)](#usernamepassword-ropc) | Allows an application to sign in the user by directly handling their password. *Do not use this flow.* | [Desktop, Mobile](scenario-desktop-acquire-token-username-password.md)
| [Integrated Windows authentication (IWA)](#integrated-windows-authentication-iwa) | Allows applications on domain or Microsoft Entra joined computers to acquire a token silently (without any UI interaction from the user). | [Desktop, Mobile](scenario-desktop-acquire-token-integrated-windows-authentication.md) |
## Tokens
The Microsoft Authentication Library (MSAL) supports several authorization grants and associated token flows for use by different application types and scenarios.
| Authentication flow | Enable | Supported application types |
|----|----|----|
| [Authorization code](#authorization-code) | User sign-in and access to web APIs on behalf of the user. | [Desktop](scenario-desktop-app-registration.md) <br /> [Mobile](scenario-mobile-app-registration.md) <br /> [Single-page app (SPA)](scenario-spa-app-configuration) (requires PKCE) <br /> [Web](scenario-web-api-call-api-app-registration.md) |
| [Client credentials](#client-credentials) | Access to web APIs by using the identity of the application itself. Typically used for server-to-server communication and automated scripts requiring no user interaction. | [Daemon](scenario-daemon-app-registration.md) |
| [Device code](#device-code) | User sign-in and access to web APIs on behalf of the user on input-constrained devices like smart TVs and IoT devices. Also used by command line interface (CLI) applications. | [Desktop, Mobile](scenario-desktop-acquire-token-device-code-flow.md) |
| [Implicit grant](#implicit-grant) | User sign-in and access to web APIs on behalf of the user. *Do not use this flow - use authorization code with PKCE instead.* | * [Single-page app (SPA)](scenario-spa-app-configuration) <br /> * [Web](scenario-web-api-call-api-app-registration.md)
| [On-behalf-of (OBO)](#on-behalf-of-obo) | Access from an "upstream" web API to a "downstream" web API on behalf of the user. The user's identity and delegated permissions are passed through to the downstream API from the upstream API. | [Web API](scenario-web-api-call-api-app-registration.md) |
| [Username/password (ROPC)](#usernamepassword-ropc) | Allows an application to sign in the user by directly handling their password. *Do not use this flow.* | [Desktop, Mobile](scenario-desktop-acquire-token-username-password.md) |
| [Integrated Windows authentication (IWA)](#integrated-windows-authentication-iwa) | Allows applications on domain or Microsoft Entra joined computers to acquire a token silently (without any UI interaction from the user). | [Desktop, Mobile](scenario-desktop-acquire-token-integrated-windows-authentication.md) |
## Tokens