website: add pricing waitlist and blog post (#5058)
* pricing Signed-off-by: Jens Langhammer <jens@goauthentik.io> * update Signed-off-by: Jens Langhammer <jens@goauthentik.io> * website: add pricing waitlist and blog post Signed-off-by: Jens Langhammer <jens@goauthentik.io> * Apply suggestions from code review Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com> Signed-off-by: Jens L. <jens@beryju.org> * fix lint Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io> Signed-off-by: Jens L. <jens@beryju.org> Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
This commit is contained in:
parent
9a52d8db83
commit
35d2e9cd5f
|
@ -0,0 +1,76 @@
|
||||||
|
---
|
||||||
|
title: What’s new with authentik - March 2023
|
||||||
|
slug: 2023-03-23-whats-new-with-authentik-march-2023
|
||||||
|
authors:
|
||||||
|
- name: Jens Langhammer
|
||||||
|
title: CTO at Authentik Security Inc
|
||||||
|
url: https://github.com/BeryJu
|
||||||
|
image_url: https://github.com/BeryJu.png
|
||||||
|
- name: Tana Berry
|
||||||
|
title: Sr. Technical Content Editor at Authentik Security Inc
|
||||||
|
url: https://github.com/tanberry
|
||||||
|
image_url: https://github.com/tanberry.png
|
||||||
|
tags:
|
||||||
|
- announcement
|
||||||
|
hide_table_of_contents: false
|
||||||
|
---
|
||||||
|
|
||||||
|
In a blog from last November 2022, titled “[Next steps for authentik](https://goauthentik.io/blog/2022-11-02-the-next-step-for-authentik)”, I wrote about the launch of [Authentik Security](https://goauthentik.io/), our open core company built around the open source project [authentik](https://github.com/goauthentik/authentik).
|
||||||
|
|
||||||
|
In this post, we’d like to provide updates on our progress in building out Authentik Security the company, ramping up the feature set in our open source identity provider, and taking the first steps in developing and offering an enterprise-level feature set for the Cloud or self-hosting. We are enthusiastic about our path forward and our plans to take authentik from a project to a product.
|
||||||
|
|
||||||
|
<!--truncate-->
|
||||||
|
|
||||||
|
## Company Updates
|
||||||
|
|
||||||
|
Authentik Security is now officially almost 6 months old. The energy and vitality of our community-based authentik project continues, and now with a growing staff we can keep the open source product expanding with new releases and also work on launching and growing the company. Mixed into that balance is defining our feature sets for each of our offerings, and developing new functionality for companies that want to deploy authentik at the enterprise level, either self-hosted or on the Cloud as a SaaS offering by Authentik Security.
|
||||||
|
|
||||||
|
We have a lot of exciting work in front of us. Check out our [job posts](https://goauthentik.io/jobs/) and consider joining us!
|
||||||
|
|
||||||
|
## New features for authentik
|
||||||
|
|
||||||
|
Authentik Security aims to always be open and transparent, and our trust in our community’s awesomeness means that we realize you all are experts in the field, the ones working in the security and identity management industry every day (and night!), so we look forward to strengthening our collaboration and communication with you, our user.
|
||||||
|
|
||||||
|
We have a roadmap with several new features, and we want to hear your opinions on them. You can write us directly at hello@goauthentik.io or open a [GitHub issue](https://github.com/goauthentik/authentik/issues). For more targeted conversations, we will reach out to schedule calls with users who want to provide more in-depth collaboration and feedback.
|
||||||
|
|
||||||
|
### Coming up
|
||||||
|
|
||||||
|
Roadmapped features include:
|
||||||
|
|
||||||
|
- **RBAC ~~tighter access control~~**
|
||||||
|
- Currently there’s only the option of users to be superusers or regular users, and superusers can edit everything, including all authentic objects. This goes against the security principle of [least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege), and as such goes against our security-focused mantra. Role-based access control (RBAC) restricts CRUD rights on authentik objects based on a specific _role,_ providing even more fine-grained control.
|
||||||
|
- **UX improvements**
|
||||||
|
- Ease of use and clear, intuitive UIs is always one of our main goals, and we’re now focusing yet more on making the experience of using authentik even better. Less jumping around in the UI and more helpful context actions, suggestions, and recommendations.
|
||||||
|
- **Push-notification multifactor authentication** (Enterprise)
|
||||||
|
- authentik recognizes the important of MFA (Multifactor Authentication); in some cases, the old username/password combination alone is less-than-sufficient.
|
||||||
|
- **Desktop authentication** (Enterprise)
|
||||||
|
- robust cross-platform desktop authentication to secure access to all machines running in the environment.
|
||||||
|
- **AI-based risk assessment** (Enterprise)
|
||||||
|
- AI provides the ability to analyze massive amounts of data that are relevant to security and access, accelerating risk assessment.
|
||||||
|
|
||||||
|
### We’re listening
|
||||||
|
|
||||||
|
As we grow the company and the feature sets, we are focused on building and maintaining a strong process for consistent communication and collaboration between our product team and our users. We want to hear what are the top features that you would like to see prioritized for our product and development teams. We look forward to conducting user interviews, requests for new features via GitHub Issues, and even surveys fueled by swag giveaways!
|
||||||
|
|
||||||
|
## Announcing the new Plans page
|
||||||
|
|
||||||
|
We are excited to announce that we will publish a new page on our product website, where we explain our product plans and the pricing for each offering. It’s important to us that we get this right, so we will also implement a communication and input process to gather feedback on our pricing and all offering details.
|
||||||
|
|
||||||
|
One of the primary ways for us to hear your input will be right there on the new page. We have created a “waitlist” for each pricing plan, in order to gauge interest in the plans’ feature sets and to learn what feedback you have on the pricing in general. Please join the list and the conversation!
|
||||||
|
|
||||||
|
### About the plans
|
||||||
|
|
||||||
|
The following offerings are described in detail on the new page (coming soon!) in our website.
|
||||||
|
|
||||||
|
- Open Source
|
||||||
|
|
||||||
|
Our forever-free offering, the open source authentik project, has been active for over 5 years, and now has the support of Authentik Security. For self-hosted environments, works using all major authentication protocols (OAuth2/OpenID Connect, SAML, LDAP, and proxy authentication), with an advanced, customizable policy engine, and community support.
|
||||||
|
|
||||||
|
- Enterprise Self-hosted
|
||||||
|
Our Enterprise Self-hosted plan offers all of the features of open source authentic (and is still source-available), plus releases with long-term-support (LTS), an enterprise-level support plan, and additional features for larger organizations such as AI-based risk assessment and multifactor authentication (MFA) with push notification.
|
||||||
|
- Enterprise Cloud
|
||||||
|
The Enterprise Cloud plan provides the convenience of our enterprise-level product as a SaaS offering, hosted and managed by Authentik Security. For many organizations, the benefits of decreased operational costs and universal data access (no VPN, servers, and network configuration required) make SaaS the best choice. With the cloud offering, the same enterprise-level support plan is included, and migrating to self-hosted is always an option.
|
||||||
|
|
||||||
|
Take a look at the new [Plans page](https://goauthentik.io/pricing/), and if you’re interested in the upcoming feature sets and learning more about our Cloud or self-hosted offerings, join the wait list and let’s start talking about what your company needs.
|
||||||
|
|
||||||
|
Thanks for reading, and being part of authentik.
|
|
@ -24,25 +24,26 @@ module.exports = {
|
||||||
{ to: "blog", label: "Blog", position: "left" },
|
{ to: "blog", label: "Blog", position: "left" },
|
||||||
{
|
{
|
||||||
to: "docs/",
|
to: "docs/",
|
||||||
activeBasePath: "docs",
|
label: "Docs",
|
||||||
label: "Documentation",
|
|
||||||
position: "left",
|
position: "left",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
to: "integrations/",
|
to: "integrations/",
|
||||||
activeBasePath: "integrations",
|
|
||||||
label: "Integrations",
|
label: "Integrations",
|
||||||
position: "left",
|
position: "left",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
to: "developer-docs/",
|
to: "developer-docs/",
|
||||||
activeBasePath: "developer-docs",
|
|
||||||
label: "Developer",
|
label: "Developer",
|
||||||
position: "left",
|
position: "left",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
to: "pricing/",
|
||||||
|
label: "Pricing",
|
||||||
|
position: "left",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
to: "jobs/",
|
to: "jobs/",
|
||||||
activeBasePath: "jobs",
|
|
||||||
label: "Jobs",
|
label: "Jobs",
|
||||||
position: "left",
|
position: "left",
|
||||||
},
|
},
|
||||||
|
|
|
@ -74,3 +74,8 @@
|
||||||
for = "/*"
|
for = "/*"
|
||||||
[headers.values]
|
[headers.values]
|
||||||
X-Frame-Options = "DENY"
|
X-Frame-Options = "DENY"
|
||||||
|
|
||||||
|
[dev]
|
||||||
|
command = "npm run watch"
|
||||||
|
targetPort = 3000
|
||||||
|
publish = "build"
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
import React, { useState } from "react";
|
||||||
|
|
||||||
|
interface CardProps {
|
||||||
|
title: string;
|
||||||
|
body: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Card = ({ title, body }: CardProps): JSX.Element => {
|
||||||
|
const [isActive, setIsActive] = useState(false);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
padding: "1rem",
|
||||||
|
marginBottom: "1rem",
|
||||||
|
marginTop: "1rem",
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
cursor: "pointer",
|
||||||
|
}}
|
||||||
|
className="card"
|
||||||
|
onClick={() => setIsActive((state) => !state)}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "row",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
marginLeft: "0.5rem",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{title}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{isActive && (
|
||||||
|
<div
|
||||||
|
className="card__body"
|
||||||
|
dangerouslySetInnerHTML={{ __html: body }}
|
||||||
|
>
|
||||||
|
{}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Card;
|
|
@ -2,7 +2,6 @@ import React from "react";
|
||||||
import Layout from "@theme/Layout";
|
import Layout from "@theme/Layout";
|
||||||
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
||||||
import { useColorMode } from "@docusaurus/theme-common";
|
import { useColorMode } from "@docusaurus/theme-common";
|
||||||
import BrowserOnly from "@docusaurus/core/lib/client/exports/BrowserOnly";
|
|
||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
|
|
||||||
function JobBoardWrapper() {
|
function JobBoardWrapper() {
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
import React from "react";
|
||||||
|
import styles from "./waitlist.module.css";
|
||||||
|
import clsx from "clsx";
|
||||||
|
|
||||||
|
export function WaitListForm(props) {
|
||||||
|
return (
|
||||||
|
<section>
|
||||||
|
<div
|
||||||
|
className="container"
|
||||||
|
style={{ marginTop: "2rem", marginBottom: "4rem" }}
|
||||||
|
>
|
||||||
|
<h2 style={{ textAlign: "center" }}>Join the waitlist</h2>
|
||||||
|
<p style={{ textAlign: "center" }}>
|
||||||
|
Sign up to be notified once authentik Enterprise becomes
|
||||||
|
ready!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div className={"row"}>
|
||||||
|
<div className={"col col--4 margin-vert--md"}></div>
|
||||||
|
<div className={"col col--4 margin-vert--md"}>
|
||||||
|
<form
|
||||||
|
name="enterprise-waitlist-v1"
|
||||||
|
method="post"
|
||||||
|
data-netlify="true"
|
||||||
|
netlify-honeypot="bot-field"
|
||||||
|
>
|
||||||
|
<p style={{ visibility: "hidden" }}>
|
||||||
|
<label>
|
||||||
|
Don't fill this out if you're human:{" "}
|
||||||
|
<input name="bot-field" />
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
<input
|
||||||
|
type="hidden"
|
||||||
|
name="form-name"
|
||||||
|
value="enterprise-waitlist-v1"
|
||||||
|
/>
|
||||||
|
<input
|
||||||
|
type="hidden"
|
||||||
|
name="product"
|
||||||
|
value={props.product}
|
||||||
|
/>
|
||||||
|
<input
|
||||||
|
type="email"
|
||||||
|
name="email"
|
||||||
|
className={clsx(styles.emailInput)}
|
||||||
|
placeholder="Your Email address"
|
||||||
|
/>
|
||||||
|
<button
|
||||||
|
className="button button--primary button--lg button--block"
|
||||||
|
type="submit"
|
||||||
|
>
|
||||||
|
Join
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div className={"col col--4 margin-vert--md"}></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,137 @@
|
||||||
|
import React from "react";
|
||||||
|
import Layout from "@theme/Layout";
|
||||||
|
import Link from "@docusaurus/Link";
|
||||||
|
import Card from "../../components/PricingQuestions/Card";
|
||||||
|
|
||||||
|
export default function pricingPage() {
|
||||||
|
return (
|
||||||
|
<Layout title="Pricing">
|
||||||
|
<section>
|
||||||
|
<div
|
||||||
|
className="container"
|
||||||
|
style={{ marginTop: "2rem", marginBottom: "4rem" }}
|
||||||
|
>
|
||||||
|
<h1 style={{ textAlign: "center" }}>Pricing</h1>
|
||||||
|
<p style={{ textAlign: "center" }}>
|
||||||
|
All variants include security patches for all supported
|
||||||
|
versions.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div className={"row"}>
|
||||||
|
<div className={"col col--4 margin-vert--md"}>
|
||||||
|
<div className="card" style={{ height: "28rem" }}>
|
||||||
|
<div className="card__header">
|
||||||
|
<h3>Open Source</h3>
|
||||||
|
</div>
|
||||||
|
<div className="card__body">
|
||||||
|
<li>Open source</li>
|
||||||
|
<li>Self-hosted</li>
|
||||||
|
<li>Supports OAuth2/OpenID Connect</li>
|
||||||
|
<li>Supports SAML</li>
|
||||||
|
<li>Supports LDAP</li>
|
||||||
|
<li>Supports Proxy authentication</li>
|
||||||
|
<li>Advanced policy engine</li>
|
||||||
|
<li>Community support</li>
|
||||||
|
</div>
|
||||||
|
<div className="card__footer">
|
||||||
|
<h1>Free, forever</h1>
|
||||||
|
<Link
|
||||||
|
className="button button--primary button--block"
|
||||||
|
href={"/docs/"}
|
||||||
|
>
|
||||||
|
Get Started
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className={"col col--4 margin-vert--md"}>
|
||||||
|
<div className="card" style={{ height: "28rem" }}>
|
||||||
|
<div className="card__header">
|
||||||
|
<h3>Enterprise Self-Hosted</h3>
|
||||||
|
</div>
|
||||||
|
<div className="card__body">
|
||||||
|
<li>Self-hosted</li>
|
||||||
|
<li>Source-available</li>
|
||||||
|
<li>Long-term-support releases</li>
|
||||||
|
<li>Enterprise support plan (50 Users+)</li>
|
||||||
|
<li>Push-notification MFA (planned)</li>
|
||||||
|
<li>Desktop authentication (planned)</li>
|
||||||
|
<li>AI-based risk assessment (planned)</li>
|
||||||
|
</div>
|
||||||
|
<div className="card__footer">
|
||||||
|
<h1>
|
||||||
|
$5 <small>/user/month</small>
|
||||||
|
</h1>
|
||||||
|
<a
|
||||||
|
className="button button--info button--block"
|
||||||
|
href="./waitlist/enterprise"
|
||||||
|
>
|
||||||
|
Join waitlist
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className={"col col--4 margin-vert--md"}>
|
||||||
|
<div className="card" style={{ height: "28rem" }}>
|
||||||
|
<div className="card__header">
|
||||||
|
<h3>Enterprise Cloud</h3>
|
||||||
|
</div>
|
||||||
|
<div className="card__body">
|
||||||
|
<li>Hosted and Managed by authentik</li>
|
||||||
|
<li>
|
||||||
|
Easily shift to self-hosted if needed
|
||||||
|
</li>
|
||||||
|
<li>Source-available</li>
|
||||||
|
<li>Long-term-support releases</li>
|
||||||
|
<li>Enterprise support plan (50 Users+)</li>
|
||||||
|
<li>Push-notification MFA (planned)</li>
|
||||||
|
<li>Desktop authentication (planned)</li>
|
||||||
|
<li>AI-based risk assessment (planned)</li>
|
||||||
|
</div>
|
||||||
|
<div className="card__footer">
|
||||||
|
<h4>Minimum 100 users</h4>
|
||||||
|
<h1>
|
||||||
|
$5 <small>/user/month</small>
|
||||||
|
</h1>
|
||||||
|
<a
|
||||||
|
className="button button--info button--block"
|
||||||
|
href="./waitlist/cloud"
|
||||||
|
>
|
||||||
|
Join waitlist
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<div className="container" style={{ marginBottom: "3rem" }}>
|
||||||
|
<div class="row">
|
||||||
|
<div className="col col--8 col--offset-2">
|
||||||
|
<p className="hero__subtitle margin--md">
|
||||||
|
Frequently Asked Questions
|
||||||
|
</p>
|
||||||
|
<div class="card-demo margin--md">
|
||||||
|
<Card
|
||||||
|
body="No. As part of our core principal, we will not move any features from the open source version to the enterprise version. Features from the enterprise version are periodically moved to the open source version."
|
||||||
|
title="Will any feature of the open-source version ever become enterprise?"
|
||||||
|
/>
|
||||||
|
<Card
|
||||||
|
body="We're always curious to hear what our customers are interested in and what they want to see in authentik, so if you have any questions about features send an email to <a href='mailto:hello@goauthentik.io'>hello@goauthentik.io</a>."
|
||||||
|
title="Are you planning to add X to authentik?"
|
||||||
|
/>
|
||||||
|
<Card
|
||||||
|
body="Anyone that wants to use the enterprise features listed above. There's no minimum user amount required for enterprise."
|
||||||
|
title="Who should use Enterprise plans?"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</Layout>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
.emailInput {
|
||||||
|
width: 100%;
|
||||||
|
line-height: 2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
import React from "react";
|
||||||
|
import { WaitListForm } from "../_waitlist.jsx";
|
||||||
|
import Layout from "@theme/Layout";
|
||||||
|
|
||||||
|
export default function waitlistCloud() {
|
||||||
|
return (
|
||||||
|
<Layout title="Waitlist">
|
||||||
|
<WaitListForm product="cloud"></WaitListForm>
|
||||||
|
</Layout>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
import React from "react";
|
||||||
|
import { WaitListForm } from "../_waitlist.jsx";
|
||||||
|
import Layout from "@theme/Layout";
|
||||||
|
|
||||||
|
export default function waitListEnterprise() {
|
||||||
|
return (
|
||||||
|
<Layout title="Waitlist">
|
||||||
|
<WaitListForm product="enterprise"></WaitListForm>
|
||||||
|
</Layout>
|
||||||
|
);
|
||||||
|
}
|
Reference in New Issue