FusionAuth是否可以实现这种SSO方案?

时间:2019-06-06 08:09:48

标签: fusionauth

  1. 我转到我的应用程序,检查是否有JWT cookie
  2. 如果存在,我将对其进行解析并开始验证用户是否有权访问我的应用程序
  3. 如果不存在,我将重定向用户以在FusionAuth中进行身份验证
  4. 成功登录后,用户将被重定向回我的应用程序

如何在第3步中指定应用程序的fusionauth ID?

以及如何指定成功登录后要重定向到我的应用程序?

我假设Fusionauth在Fusionauth.mydomain.com上运行,并且myapp.mydomain.com上的应用程序和JWT cookie将在mydomain.com中发布,因此对两者都可见。

2 个答案:

答案 0 :(得分:0)

这似乎是标准的OAuth授权代码授予工作流程。我们有此工作流程以及此处记录的许多其他工作流程:

https://fusionauth.io/articles/logins/types-of-logins-authentication-workflows

我的猜测是,您的特定工作流程可能是使用JWT和刷新令牌的单页应用程序的授权代码授予,在此处进行了记录:

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登录后要返回的位置。您必须在“应用程序的OAuth配置”标签下的FusionAuth中配置此URI。

如果您正在运行FusionAuth 1.6.0或更高版本,则还可以单击应用程序的“查看”图标,它将显示一个包含OAuth URL的弹出对话框。不过,您仍然需要指定redirect_uri。这是“授权”端点的文档页面:

https://fusionauth.io/docs/v1/tech/oauth/endpoints#authorize

工作完成后,您将需要为redirect_uri编写Controller。该控制器将从FusionAuth生成的URL中提取code,并调用/oauth2/token端点。此过程将使用授权代码交换访问令牌,即JWT。

/oauth2/otken端点的文档位于此处:

https://fusionauth.io/docs/v1/tech/oauth/endpoints#token

这将帮助您实现Controller。

答案 1 :(得分:0)

是的,这是可能的。

在步骤3中,您将浏览器重定向到FusionAuth登录页面。在FusionAuth用户界面中导航至Settings --> Applications,然后在questio中单击该应用程序的绿色视图按钮。

这将打开一个对话框,其中将显示集成信息(如果您使用的是FusionAuth的最新版本)。

您将看到一个类似这样的链接:

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。

  

以及如何指定成功登录后要重定向到我的应用程序?

在FusionAuth中将其配置为授权重定向,然后在重定向到FusionAuth登录时指定相同的URL。请注意上面示例URL中的redirect_uri参数。这里有此配置的屏幕截图:https://fusionauth.io/docs/v1/tech/oauth/overview

  

我假设Fusionauth在Fusionauth.mydomain.com上运行,并且myapp.mydomain.com上的应用程序和JWT cookie将在mydomain.com中发布,因此对两者都可见。

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