Skip to content

Commit

Permalink
replaced a bunch of v1/tech links
Browse files Browse the repository at this point in the history
  • Loading branch information
fusionandy committed Oct 28, 2023
1 parent 895be5c commit 79db1eb
Show file tree
Hide file tree
Showing 235 changed files with 646 additions and 996 deletions.
2 changes: 1 addition & 1 deletion astro/src/content/articles/authentication/avoid-lockin.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ There are two password hashing concerns to be aware of.

First, what is the hashing algorithm used for your passwords?

Your authentication system documentation should specify this. It's best if this is an industy-standard hash such as Argon or PBK2DF. Certain authentication systems, such as FusionAuth, allow for [custom password hashing algorithms](/docs/v1/tech/plugins/custom-password-hashing) to be used, which can mitigate the risk of using a nonstandard hash.
Your authentication system documentation should specify this. It's best if this is an industy-standard hash such as Argon or PBK2DF. Certain authentication systems, such as FusionAuth, allow for [custom password hashing algorithms](/docs/extend/code/password-hashes/custom-password-hashing) to be used, which can mitigate the risk of using a nonstandard hash.

Second, can you get access to the password hashes?

Expand Down
4 changes: 2 additions & 2 deletions astro/src/content/articles/authentication/login-failures.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Picture a chart representing user logins. It has a line, trending upwards and to

![No dips here!.](/img/articles/login-failure/login-success-graph.png)

When you care about providing great [authentication](/docs/v1/tech/core-concepts/authentication-authorization) experiences, like us (the few, the proud), there is nothing better than this chart - undeniable proof that our users are successfully logging in. And, more importantly, getting access to the features or data which that login process protects. That’s what most users are looking for, after all.
When you care about providing great [authentication](/docs/get-started/core-concepts/authentication-authorization) experiences, like us (the few, the proud), there is nothing better than this chart - undeniable proof that our users are successfully logging in. And, more importantly, getting access to the features or data which that login process protects. That’s what most users are looking for, after all.

The more people who successfully log in, the more confident we are that our solution can handle a large number of users and that users are able to enter the application smoothly.

Expand Down Expand Up @@ -39,7 +39,7 @@ Next, walk through what you should be doing::

1. **Begin logging login activity, if you aren’t already.** Both successes and failures must be measured to understand the average login success ratio and the trend over time. Here are some common ways to capture this data:

* [FusionAuth’s login failure webhook](/docs/v1/tech/events-webhooks/events/user-login-failed) fires an event when a login fails due to invalid credentials
* [FusionAuth’s login failure webhook](/docs/extend/events-and-webhooks/events/user-login-failed) fires an event when a login fails due to invalid credentials
* Okta gives admins access to a report that contains failed login information
* Auth0 provides events that give specific reasons why a login failed
* If you are using another provider, consult the documentation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ tags: mfa 2fa multi-factor-authentication two-factor-authentication user-experie
icon: /img/icons/multi-factor-authentication.svg
---

As more of our lives move online, [multi-factor authentication (MFA)](/docs/v1/tech/guides/multi-factor-authentication) becomes increasingly important as a way of keeping our accounts secure. As a user, you know you should enable MFA on any accounts containing valuable data or which you want to keep safe.
As more of our lives move online, [multi-factor authentication (MFA)](/docs/lifecycle/authenticate-users/multi-factor-authentication) becomes increasingly important as a way of keeping our accounts secure. As a user, you know you should enable MFA on any accounts containing valuable data or which you want to keep safe.

As a developer or software engineer, MFA may seem a bit mysterious. This article will cover:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,19 @@ So any API request that needs to read from, add to, or modify Kubernetes configu
A wide variety of options are supported, including

* Custom headers using an authenticating proxy
* [OIDC tokens](/docs/v1/tech/core-concepts/integration-points) generated by an external IdP
* [OIDC tokens](/docs/get-started/core-concepts/integration-points) generated by an external IdP
* Client certificates
* [Webhooks](/docs/v1/tech/events-webhooks/) which receive a token and can validate access
* [Webhooks](/docs/extend/events-and-webhooks/) which receive a token and can validate access

There's also an impersonation option, which allows users to "take on" the identity of other users, to test access or otherwise troubleshoot.

Once users are authenticated, information about them, such as username, group, and resources requested, is available to [Kubernetes authorizers](https://kubernetes.io/docs/reference/access-authn-authz/authorization/). These are again well documented, but support the following methods of determining access to particular resources:

* ABAC: where policies are combined and evaluated
* RBAC: where roles associated with the user control access
* [Webhooks](/docs/v1/tech/events-webhooks/), which fire to a known destination; the response is what determines access
* [Webhooks](/docs/extend/events-and-webhooks/), which fire to a known destination; the response is what determines access

If relying on external sources to determine user resource access, such as an OIDC server or [webhooks](/docs/v1/tech/events-webhooks/), you'll want to make sure you have another means of authentication independent of that external source. This allows you to modify the configuration of your cluster when those external resources are unavailable.
If relying on external sources to determine user resource access, such as an OIDC server or [webhooks](/docs/extend/events-and-webhooks/), you'll want to make sure you have another means of authentication independent of that external source. This allows you to modify the configuration of your cluster when those external resources are unavailable.

Here's a [tutorial on setting up Kubernetes RBAC with FusionAuth](/blog/2022/02/24/rbac-with-kubernetes-fusionauth).

Expand Down
2 changes: 1 addition & 1 deletion astro/src/content/articles/ciam/what-is-ciam.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ There are a number of essential elements that are needed for a successful CIAM s
* Scalability: CIAM solutions need to be able to scale to handle large numbers of users. This is especially important for businesses that have a large customer base or that expect to see significant growth in the number of users.
* Privacy: CIAM solutions need to protect customer data. This includes data such as names, addresses, email addresses, and passwords. CIAM solutions should use industry-standard security measures to protect customer data, such as encryption, hashing and access control.
* Functionality: CIAM solutions need to provide a wide range of features. These features should include registration, login, password management, account recovery, and Role-based access control (RBAC). CIAM solutions should also be able to integrate with other applications and systems, such as CRM systems and e-commerce platforms.
* Extensibility: CIAM solutions need to be able to be extended to meet the specific needs of an organization. This means that the solution should be flexible enough to be customized to the specific requirements of the organization. Including the ability to add [application specific themes](/docs/v1/tech/themes/application-specific-themes), where the styling and branding match the application.
* Extensibility: CIAM solutions need to be able to be extended to meet the specific needs of an organization. This means that the solution should be flexible enough to be customized to the specific requirements of the organization. Including the ability to add [application specific themes](/docs/customize/look-and-feel/application-specific-themes), where the styling and branding match the application.
* APIs & Integrations: CIAM solutions need to be able to integrate with other applications and systems. This allows the solution to be used to improve the security and user experience of other applications. Also, variability (peaks and valleys of usage over time, depending on the customer journey), long lag times between users interacting, and self-service.

In addition to these essential elements, there are a number of other factors that organizations should consider when choosing a CIAM solution. These factors include the cost of the solution, the ease of use, and the level of support that is offered.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,11 @@ Click "Submit".

Once FusionAuth starts, you’ll be taken to the Setup Wizard. Create an administrator account and accept the license.

For more on setup wizard, [read the documentation](/docs/v1/tech/tutorials/setup-wizard).
For more on setup wizard, [read the documentation](/docs/get-started/download-and-install/setup-wizard).

### Create a Tenant

FusionAuth supports single and multiple tenants. This enables you to host multiple games or applications on a single instance of the FusionAuth server. A [tenant](/docs/v1/tech/apis/tenants) can hold multiple groups of users in which each user is unique by email address or username.
FusionAuth supports single and multiple tenants. This enables you to host multiple games or applications on a single instance of the FusionAuth server. A [tenant](/docs/apis/tenants) can hold multiple groups of users in which each user is unique by email address or username.

To create a tenant, open the "Tenants" tab on the side pane and click the plus button in the top right corner. Give the tenant a unique name, in this case `GameGuruTenant`, leaving the rest of the options as they are and saving the tenant.

Expand All @@ -176,7 +176,7 @@ You also need to add some roles for this apps use case:

### Create an API Key

Most FusionAuth APIs [require authentication](/docs/v1/tech/apis/authentication) when making requests. This is done by adding an `Authorization` header to the request with an API key associated with your application.
Most FusionAuth APIs [require authentication](/docs/apis/authentication) when making requests. This is done by adding an `Authorization` header to the request with an API key associated with your application.

On the side pane, click "Settings" and then "API Keys" and click the plus button on the top right corner.

Expand All @@ -196,13 +196,13 @@ You are going to build a [Flutter](https://flutter.dev/) cross-platform game for

FusionAuth offers multiple authentication options for you to consider when building your application. These include:

- The [hosted login pages](/docs/v1/tech/core-concepts/integration-points#hosted-login-pages) where FusionAuth hosts the registration forms and pages.
- An [API-based](/docs/v1/tech/apis/users) approach to manage users.
- The [hosted login pages](/docs/get-started/core-concepts/integration-points#hosted-login-pages) where FusionAuth hosts the registration forms and pages.
- An [API-based](/docs/apis/users) approach to manage users.
- [Third-party login](/docs/lifecycle/authenticate-users/identity-providers/) using identity providers such as Google.

You can use any combination of these. In this application, you are going to utilize the API option due to its simplicity and direct approach.

In a real-world application, you’ll want to use the hosted login pages, because that will allow you to offload all responsibility to FusionAuth for passwords or other credentials. It also allows you to easily add more security to your application if needed, including enabling MFA or rate-limiting certain users. But you'll want to make sure you [theme them to look like your application](/docs/v1/tech/themes/).
In a real-world application, you’ll want to use the hosted login pages, because that will allow you to offload all responsibility to FusionAuth for passwords or other credentials. It also allows you to easily add more security to your application if needed, including enabling MFA or rate-limiting certain users. But you'll want to make sure you [theme them to look like your application](/docs/customize/look-and-feel/).
### Create a New Flutter Application
Expand Down Expand Up @@ -354,20 +354,20 @@ Here is an explanation of some of the variables in the above code.
The `login` function receives two arguments, `username` and `password`, which are sent to the server for user authentication.
The [FusionAuth login API](/docs/v1/tech/apis/login#request) is located at `/api/login` and requires an [API key authentication](/docs/v1/tech/apis/authentication), which is passed in the `Authorization` header. If authentication is successful, the API will return data that you store securely for other purposes. An unsuccessful request will fail with an error code as defined in the [Login API documentation](/docs/v1/tech/apis/login#request).
The [FusionAuth login API](/docs/apis/login#request) is located at `/api/login` and requires an [API key authentication](/docs/apis/authentication), which is passed in the `Authorization` header. If authentication is successful, the API will return data that you store securely for other purposes. An unsuccessful request will fail with an error code as defined in the [Login API documentation](/docs/apis/login#request).
The `register` function also receives two arguments, `username` and `password`, which are sent to the server for user creation and registration. The [FusionAuth Registration API](/docs/v1/tech/apis/registrations) is located at `/api/user/registration/`, and also requires an API key for authentication.
The `register` function also receives two arguments, `username` and `password`, which are sent to the server for user creation and registration. The [FusionAuth Registration API](/docs/apis/registrations) is located at `/api/user/registration/`, and also requires an API key for authentication.
However, in some scenarios, the [X-FusionAuth-TenantId](/docs/v1/tech/apis/authentication#making-an-api-request-using-a-tenant-id) header is required to scope the request properly.
However, in some scenarios, the [X-FusionAuth-TenantId](/docs/apis/authentication#making-an-api-request-using-a-tenant-id) header is required to scope the request properly.
Finally, in the JSON request, you add a list of roles that the user should have. In this case, you assign the `gamer` role created above.
User creation involves creating a tenant scoped account for a user on the FusionAuth server while user registration entails associating the user to the FusionAuth application they are going to log into, `gamer-gurus` in this case.
FusionAuth offers two ways to create and register a user:
1. [Create a user and registration combined](/docs/v1/tech/apis/registrations#create-a-user-and-registration-combined)
2. [Create a user](/docs/v1/tech/apis/users#create-a-user) and then [register the user](/docs/v1/tech/apis/registrations#create-a-user-registration-for-an-existing-user)
1. [Create a user and registration combined](/docs/apis/registrations#create-a-user-and-registration-combined)
2. [Create a user](/docs/apis/users#create-a-user) and then [register the user](/docs/apis/registrations#create-a-user-registration-for-an-existing-user)
This application uses the first option, since it is simpler. Below is a video of how your application should be working when registering an account on Android.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Go to the Docker dashboard. You should see two containers running, one with Fusi

### Set Up FusionAuth for Device Authorization

Now that your Docker image for FusionAuth is running, you need to configure the identity provider for your demo application. Go to [http://localhost:9011/admin/setup-wizard](http://localhost:9011/admin/setup-wizard) and fill in your name, email, and password. Click **Submit**. (You can learn more about the [Setup Wizard here](/docs/v1/tech/tutorials/setup-wizard).)
Now that your Docker image for FusionAuth is running, you need to configure the identity provider for your demo application. Go to [http://localhost:9011/admin/setup-wizard](http://localhost:9011/admin/setup-wizard) and fill in your name, email, and password. Click **Submit**. (You can learn more about the [Setup Wizard here](/docs/get-started/download-and-install/setup-wizard).)

Go to Applications on the navigation bar and click on "Create a new application". Name the application `Test Grant` and save it.

Expand Down Expand Up @@ -124,7 +124,7 @@ Now that the app is running, use your browser to go to [http://localhost:8000/](

### Make a Request to the Device Verification Endpoint

The code in the `main.js` file contains the `connectDevice()` function, which is used to make an [authorization request](/docs/v1/tech/oauth/#example-device-authorization-grant) to FusionAuth’s endpoint authorization server at `/oauth2/device_authorize`.
The code in the `main.js` file contains the `connectDevice()` function, which is used to make an [authorization request](/docs/lifecycle/authenticate-users/oauth/#example-device-authorization-grant) to FusionAuth’s endpoint authorization server at `/oauth2/device_authorize`.

The request should look like the below code:

Expand Down Expand Up @@ -166,7 +166,7 @@ For simplicity, this tutorial keeps everything running locally.

Using a secondary device (a mobile phone or computer), the user visits the URL displayed on the device screen and starts to authenticate using the displayed code. In this case, you’ll use the same machine and open the URL displayed there.

Click on the URL to open it in your browser or a different one. All the pages shown in this tutorial are the stock FusionAuth theme, but you can [easily modify the look and feel of the theme](/docs/v1/tech/themes/). Verify the device by entering the code and clicking "Submit".
Click on the URL to open it in your browser or a different one. All the pages shown in this tutorial are the stock FusionAuth theme, but you can [easily modify the look and feel of the theme](/docs/customize/look-and-feel/). Verify the device by entering the code and clicking "Submit".

![Entering the device grant code.](/img/articles/device-grant-gaming/device-grant-code-entry.png)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ You can make the registration form process simpler. And you should.

Before you start, ask yourself a fundamental question: does your application require registration?

While [user registration](/docs/v1/tech/tutorials/register-user-login-api) to create an account is commonplace, every step required of a user before seeing the value of your application affects sign up rates. What can you do to avoid a typical registration process?
While [user registration](/docs/lifecycle/register-users/register-user-login-api) to create an account is commonplace, every step required of a user before seeing the value of your application affects sign up rates. What can you do to avoid a typical registration process?

### Let them try it first

Expand Down
Loading

0 comments on commit 79db1eb

Please sign in to comment.