在继续之前通知呼叫者需要额外的设置
Informing caller additional setup required before continuing
需要帮助来理解处理 additional-information-required 场景的标准流程。
上下文:我们有许多产品实施,都与中央单个 sign-on 服务器集成。注册客户可以选择开始使用新产品 on-demand。但有些产品要求客户在使用产品之前执行一些 one-off 设置步骤 - 这些步骤仅在第一次使用产品时需要。
假设客户在页面 https://product-abc.ourdomain.com 上。现在点击该产品中的 link,例如 'do something (note, this will redirect you to product-xyz)'。此时客户被重定向到 https://product-xyz.ourdomain.com。在这里,我们想要检测客户是否是第一次使用该产品,如果是,则将用户重定向到设置页面,我们可以在其中提示他们提供 product-specific 附加信息。另一方面,如果客户已经为产品配置好,他们将直接导航到产品页面并继续使用它。
我想知道是否有类似于 401 Unauthorized
流程的东西来处理这个问题。使用身份验证流程,
- 客户端尝试访问受保护的资源。
- 服务器检查调用者是否具有必要的身份验证,如果没有,returns
401 Unauthorized
状态代码以及 WWW-Authenticate
header 中的其他详细信息。
- 客户端执行身份验证——比如通过与中央单一 sign-on 服务器集成——然后重新尝试原始请求,这次成功了。
我想知道是否有类似的流程,
- 客户端尝试访问受保护的资源。
- 服务端检查客户端是否可以使用。在我们的例子中,如果客户是第一次访问该产品,则此检查将确定是否需要进行额外设置。例如,客户必须向我们提供他们的通讯地址,以便我们可以为特定客户设置数据租赁。在这里,我想 return 一个 HTTP 状态代码,比如
4xx Setup Required
,在 header 中包含附加信息,比如 WWW-SetupInfo
.
- initial-setup 流程完成后,客户将被重定向到主要产品并继续使用它。
似乎最符合我的用例的状态代码是 402 Payment Required
,但 product-xyz 不需要任何特定的订阅或付款。我们只需要一些 product-specific 附加信息来进行初始配置。
我可以通过使用 3xx 重定向进行自定义实现来处理它,但我想知道是否有更好的处理方法。
感谢您的指点。
除非您使用 basic-authentication,否则您不想使用 401 Unauthorized" status code with a
WWW-Authenticate` header。浏览器中的这种内置机制功能非常有限:
- 始终提示输入用户名和密码,没有任何机制可以通过外观或自定义工作流来自定义过程。你说你想用single-sign-on。
401 Unauthorized
与那个不兼容。
- 没有log-out机制
- 没有session超时机制
因此,几乎所有网站都使用基于表单和 cookie 的登录。如果有人没有登录,您应该使用 302 Temporary redirect
到登录页面。
同样,如果有人没有完成初始设置以使用特定页面,您将不会使用特殊的 HTTP 状态。您可以向他们展示一个 200 OK
页面,其中包含要求您需要的数据的表单,或者使用 302 Temporary redirect
将他们带到另一个 URL.[=15= 上的该表单。 ]
需要帮助来理解处理 additional-information-required 场景的标准流程。
上下文:我们有许多产品实施,都与中央单个 sign-on 服务器集成。注册客户可以选择开始使用新产品 on-demand。但有些产品要求客户在使用产品之前执行一些 one-off 设置步骤 - 这些步骤仅在第一次使用产品时需要。
假设客户在页面 https://product-abc.ourdomain.com 上。现在点击该产品中的 link,例如 'do something (note, this will redirect you to product-xyz)'。此时客户被重定向到 https://product-xyz.ourdomain.com。在这里,我们想要检测客户是否是第一次使用该产品,如果是,则将用户重定向到设置页面,我们可以在其中提示他们提供 product-specific 附加信息。另一方面,如果客户已经为产品配置好,他们将直接导航到产品页面并继续使用它。
我想知道是否有类似于 401 Unauthorized
流程的东西来处理这个问题。使用身份验证流程,
- 客户端尝试访问受保护的资源。
- 服务器检查调用者是否具有必要的身份验证,如果没有,returns
401 Unauthorized
状态代码以及WWW-Authenticate
header 中的其他详细信息。 - 客户端执行身份验证——比如通过与中央单一 sign-on 服务器集成——然后重新尝试原始请求,这次成功了。
我想知道是否有类似的流程,
- 客户端尝试访问受保护的资源。
- 服务端检查客户端是否可以使用。在我们的例子中,如果客户是第一次访问该产品,则此检查将确定是否需要进行额外设置。例如,客户必须向我们提供他们的通讯地址,以便我们可以为特定客户设置数据租赁。在这里,我想 return 一个 HTTP 状态代码,比如
4xx Setup Required
,在 header 中包含附加信息,比如WWW-SetupInfo
. - initial-setup 流程完成后,客户将被重定向到主要产品并继续使用它。
似乎最符合我的用例的状态代码是 402 Payment Required
,但 product-xyz 不需要任何特定的订阅或付款。我们只需要一些 product-specific 附加信息来进行初始配置。
我可以通过使用 3xx 重定向进行自定义实现来处理它,但我想知道是否有更好的处理方法。
感谢您的指点。
除非您使用 basic-authentication,否则您不想使用 401 Unauthorized" status code with a
WWW-Authenticate` header。浏览器中的这种内置机制功能非常有限:
- 始终提示输入用户名和密码,没有任何机制可以通过外观或自定义工作流来自定义过程。你说你想用single-sign-on。
401 Unauthorized
与那个不兼容。 - 没有log-out机制
- 没有session超时机制
因此,几乎所有网站都使用基于表单和 cookie 的登录。如果有人没有登录,您应该使用 302 Temporary redirect
到登录页面。
同样,如果有人没有完成初始设置以使用特定页面,您将不会使用特殊的 HTTP 状态。您可以向他们展示一个 200 OK
页面,其中包含要求您需要的数据的表单,或者使用 302 Temporary redirect
将他们带到另一个 URL.[=15= 上的该表单。 ]