FusionAuth 是否可以实现这种 SSO 场景?
Is this SSO scenario possible with FusionAuth?
- 我转到我的应用程序并检查是否有 JWT cookie
- 如果存在,我会解析它并开始验证用户是否有权访问我的应用程序
- 如果不存在,我将重定向用户以在 FusionAuth 中进行身份验证
- 成功登录后,用户将被重定向回我的应用程序
如何在步骤 3 中指定我的应用程序的 fusionauth id?
以及如何指定我想在成功登录后重定向到我的应用程序?
我假设 fusionauth 在 fusionauth.mydomain.com 上 运行 并且在 myapp.mydomain.com 上应用并且 JWT cookie 将在 mydomain.com 中发布,因此两者都是可见的。
这似乎是标准的 OAuth 授权代码授予工作流程。我们在此处记录了此工作流程和许多其他工作流程:
https://fusionauth.io/articles/logins/types-of-logins-authentication-workflows
我的猜测是您的特定工作流程可能是此处记录的使用 JWT 和刷新令牌的 Single-Page 应用程序的授权代码授予:
https://fusionauth.io/articles/logins/spa/oauth-authorization-code-grant-jwts-refresh-tokens-cookies
它的工作方式是您通过将浏览器重定向到 FusionAuth 的 /oauth2/authorize
端点从您的应用程序启动 OAuth 工作流。您将需要提供此信息以启动 OAuth 工作流:
client_id
- 这可以在 FusionAuth 的应用程序配置下找到
response_type
- 对于授权码授予,这将是 code
redirect_uri
- 这是您希望用户在使用 FusionAuth 登录后 return 到达的位置。您必须在应用程序的 OAuth 配置选项卡下的 FusionAuth 中配置此 URI。
如果您是 运行 FusionAuth 1.6.0 或更新版本,您还可以单击应用程序的 "View" 图标,它将显示一个包含 OAuth 的 pop-up 对话框URL。不过,您仍然需要指定 redirect_uri
。这是授权端点的文档页面:
https://fusionauth.io/docs/v1/tech/oauth/endpoints#authorize
完成该工作后,您将需要为 redirect_uri
编写控制器。此控制器将从 FusionAuth 生成的 URL 中获取 code
并调用 /oauth2/token
端点。此过程会将授权代码交换为访问令牌,即 JWT。
/oauth2/otken
端点的文档位于此处:
https://fusionauth.io/docs/v1/tech/oauth/endpoints#token
这将帮助您实现控制器。
是的,这是可能的。
在第 3 步中,您会将浏览器重定向到 FusionAuth 登录页面。导航到 FusionAuth UI 中的 Settings --> Applications
,然后单击相关应用程序的绿色视图按钮。
这将打开一个显示集成信息的对话框(如果您使用的是最新版本的 FusionAuth)。
您会看到 link 类似这样的内容:
OAuth IdP login URL: https://fusionauth.mydomain.com/oauth2/authorize?client_id=ee31103f-2fc1-4bb5-ba95-ac543693503e&response_type=code&redirect_uri={your URI here}
本例中的 client_id
参数将向 FusionAuth 标识您的应用程序。
And how do I specify that I want to redirect to my application after successful login?
这在FusionAuth中配置为授权重定向,然后您在重定向到FusionAuth登录时指定同样的URL。请注意上面示例 URL 中的 redirect_uri
参数。这里有此配置的屏幕截图:https://fusionauth.io/docs/v1/tech/oauth/overview
I assume that fusionauth is running on fusionauth.mydomain.com and application on myapp.mydomain.com and JWT cookie will be issued in mydomain.com, so it will be visible for both.
FusionAuth 目前不删除跨域 cookie。如果您是 fusionauth.mydomain.com
的 运行 FusionAuth,则 Cookie 将具有相同的域并且对 myapp.mydomain.com
不可见。
如果你想利用 FusionAuth,那么你不需要检查 myapp.mydomain.com
上的 cookie,如果用户没有登录,那么如果用户已经有 SSO,你只需重定向用户FusionAuth 上的会话,它们将被无缝重定向回您的应用程序。
您可以查看我们的登录工作流程以确定最符合您要求的工作流程,然后按照推荐的工作流程进行操作。 https://fusionauth.io/articles/logins/types-of-logins-authentication-workflows
- 我转到我的应用程序并检查是否有 JWT cookie
- 如果存在,我会解析它并开始验证用户是否有权访问我的应用程序
- 如果不存在,我将重定向用户以在 FusionAuth 中进行身份验证
- 成功登录后,用户将被重定向回我的应用程序
如何在步骤 3 中指定我的应用程序的 fusionauth id?
以及如何指定我想在成功登录后重定向到我的应用程序?
我假设 fusionauth 在 fusionauth.mydomain.com 上 运行 并且在 myapp.mydomain.com 上应用并且 JWT cookie 将在 mydomain.com 中发布,因此两者都是可见的。
这似乎是标准的 OAuth 授权代码授予工作流程。我们在此处记录了此工作流程和许多其他工作流程:
https://fusionauth.io/articles/logins/types-of-logins-authentication-workflows
我的猜测是您的特定工作流程可能是此处记录的使用 JWT 和刷新令牌的 Single-Page 应用程序的授权代码授予:
https://fusionauth.io/articles/logins/spa/oauth-authorization-code-grant-jwts-refresh-tokens-cookies
它的工作方式是您通过将浏览器重定向到 FusionAuth 的 /oauth2/authorize
端点从您的应用程序启动 OAuth 工作流。您将需要提供此信息以启动 OAuth 工作流:
client_id
- 这可以在 FusionAuth 的应用程序配置下找到
response_type
- 对于授权码授予,这将是code
redirect_uri
- 这是您希望用户在使用 FusionAuth 登录后 return 到达的位置。您必须在应用程序的 OAuth 配置选项卡下的 FusionAuth 中配置此 URI。
如果您是 运行 FusionAuth 1.6.0 或更新版本,您还可以单击应用程序的 "View" 图标,它将显示一个包含 OAuth 的 pop-up 对话框URL。不过,您仍然需要指定 redirect_uri
。这是授权端点的文档页面:
https://fusionauth.io/docs/v1/tech/oauth/endpoints#authorize
完成该工作后,您将需要为 redirect_uri
编写控制器。此控制器将从 FusionAuth 生成的 URL 中获取 code
并调用 /oauth2/token
端点。此过程会将授权代码交换为访问令牌,即 JWT。
/oauth2/otken
端点的文档位于此处:
https://fusionauth.io/docs/v1/tech/oauth/endpoints#token
这将帮助您实现控制器。
是的,这是可能的。
在第 3 步中,您会将浏览器重定向到 FusionAuth 登录页面。导航到 FusionAuth UI 中的 Settings --> Applications
,然后单击相关应用程序的绿色视图按钮。
这将打开一个显示集成信息的对话框(如果您使用的是最新版本的 FusionAuth)。
您会看到 link 类似这样的内容:
OAuth IdP login URL: https://fusionauth.mydomain.com/oauth2/authorize?client_id=ee31103f-2fc1-4bb5-ba95-ac543693503e&response_type=code&redirect_uri={your URI here}
本例中的 client_id
参数将向 FusionAuth 标识您的应用程序。
And how do I specify that I want to redirect to my application after successful login?
这在FusionAuth中配置为授权重定向,然后您在重定向到FusionAuth登录时指定同样的URL。请注意上面示例 URL 中的 redirect_uri
参数。这里有此配置的屏幕截图:https://fusionauth.io/docs/v1/tech/oauth/overview
I assume that fusionauth is running on fusionauth.mydomain.com and application on myapp.mydomain.com and JWT cookie will be issued in mydomain.com, so it will be visible for both.
FusionAuth 目前不删除跨域 cookie。如果您是 fusionauth.mydomain.com
的 运行 FusionAuth,则 Cookie 将具有相同的域并且对 myapp.mydomain.com
不可见。
如果你想利用 FusionAuth,那么你不需要检查 myapp.mydomain.com
上的 cookie,如果用户没有登录,那么如果用户已经有 SSO,你只需重定向用户FusionAuth 上的会话,它们将被无缝重定向回您的应用程序。
您可以查看我们的登录工作流程以确定最符合您要求的工作流程,然后按照推荐的工作流程进行操作。 https://fusionauth.io/articles/logins/types-of-logins-authentication-workflows