📲 Flutter Authentication and Authorization with Auth0
Tags: flutter, authentication, security
Published: 2021-10-05 14:07:14

#### 📚 In this tutorial, you’ll learn how to enhance your Flutter apps by enabling authentication, supporting federated identity providers, adding authorization by introducing roles and permissions, all by leveraging Auth0.

### <br>

## Welcome!

In this four-part tutorial, you’ll take a Flutter app and enhance it with Auth0. You’ll start by adding basic username/password authentication to it, followed by social logins, and then enable real-time support chat that makes use of authorization.

By the end of this tutorial, you’ll have built a fairly complex Flutter app that you can use as the basis for your own creations, and you will also have covered a lot of Auth0’s features.

Before we begin, let’s get our terminology straight...


### Authentication vs. authorization

Authentication and authorization are two key security components in applications, whether they are mobile apps, web apps, or machine-to-machine connections. Many people are confused by these terms, so here are some simple definitions:

* ***Authentication*** deals with the question **"Who are you?"**. You’ll implement it in this section with the help of an authentication protocol called [OpenID Connect](https://auth0.com/docs/protocols/openid-connect-protocol), or “OIDC” for short.
* ***Authorization*** answers the question **"What are you allowed to do?"**. You’ll implement it in a later section with the help of an authorization protocol called [OAuth 2.0](https://auth0.com/intro-to-iam/what-is-oauth-2/), or “OAuth2” for short.


## Adding Authentication to a Flutter App

In this section, you’ll learn how to secure a Flutter app with Auth0. You’ll take a production-ready Flutter app and add a login screen and logout functionality to it, and you’ll do it with only a fraction of the effort required to implement login and logout yourself!

You’ll be able to follow this tutorial a little more smoothly if you know the basics of Flutter, but it's not a hard requirement. If you have experience with any modern web framework, you’ll probably be able to understand the code and learn Flutter and Dart (Flutter’s programming language) as you go.


### What you’ll learn and build

While you *could* create a new Flutter project and implement everything you will learn in this tutorial, adding authentication to an existing production-ready app is pretty common. I’ll provide a production-ready app, ***MJ Coffee***, which you’ll secure by adding authentication.

In later sections, you’ll enable authentication through a social identity provider, such as Google or Apple. You’ll then work on authorization by adding roles and permissions to limit app functionalities based on each user’s permissions and roles.

I’ll explain more about what this tutorial will cover in [this video overview.](https://img.youtube.com/vi/bHdSLwWFNJ4/0.jpg)

I will provide the source code for both the “starter” and “final” versions of the application. I strongly recommend that you use the “starter” version and follow the tutorial step by step in order to better understand the application and your additions to it.

Additionally, I have recorded videos that support this tutorial. You’ll find them on my [Youtube channel
playlist](https://www.youtube.com/playlist?list=PLCOnzDflrUceRLfHEkl-u2ipjsre6ZwjV).

> **Look for the 🛠 emoji if you’d like to skim through the content while focusing on the build and execution steps.**

[Read more...](https://auth0.com/blog/flutter-authentication-authorization-with-auth0-part-1-adding-authentication-to-an-app/?utm_source=content_synd&utm_medium=sc&utm_campaign=flutter)