Session 广告B2C移动客户端-仅登录一次

Session 广告B2C移动客户端-仅登录一次,session,azure-ad-b2c,Session,Azure Ad B2c,我们对移动应用程序AD B2C客户端的要求是,用户只需登录一次,登录会话永远不会过期 这是否可能与广告B2C?是否从安全角度考虑 我的调查结果如下: 我检查了配置,最长刷新时间为90天。这意味着如果应用程序在90天内未使用,会话将结束。所以我的理解是,在没有到期日的情况下保存刷新令牌是不安全的。 否则,“让我保持登录”功能可能会有所帮助,但这可能也有一个最大会话长度。由于刷新令牌最多有90天的滚动过期时间,因此今天无法实现这一点。这意味着用户需要至少每90天使用一次应用程序 Keep Me Si

我们对移动应用程序AD B2C客户端的要求是,用户只需登录一次,登录会话永远不会过期

这是否可能与广告B2C?是否从安全角度考虑

我的调查结果如下:

我检查了配置,最长刷新时间为90天。这意味着如果应用程序在90天内未使用,会话将结束。所以我的理解是,在没有到期日的情况下保存刷新令牌是不安全的。
否则,“让我保持登录”功能可能会有所帮助,但这可能也有一个最大会话长度。

由于刷新令牌最多有90天的滚动过期时间,因此今天无法实现这一点。这意味着用户需要至少每90天使用一次应用程序

Keep Me Sign In的最长期限为68年,但您需要使用基于web的重定向,而不是资源所有者密码凭据流来利用这一期限。在刷新令牌已过期的情况下,应用程序将重定向用户再次登录,Cookie将为用户提供SSO,而不会提示用户输入任何凭据

如果您使用的是am embedded webview样式的登录,那么KMSI将提供帮助。
如果您使用的是基于API的登录(ROPC),那么KMSI将无济于事,而且您依赖于用户每90天至少使用一次应用程序。

从安全角度看,没有过期登录可能不是最好的方法,但我是在客户真正坚持的情况下才这样做的。此外,只有当你完全控制你的应用程序调用的web服务并且你可以修改它们时,这才是可能的。您没有指定应用程序是否调用任何web服务,但大多数应用程序都会这样做,我想这也是您的情况

在应用程序中,用户会话永不过期的关键是自己管理应用程序状态(用户是否登录),而不是“B2C状态”。例如,您可以这样做:

  • 在第一次登录时,您调用B2C服务器进行身份验证。它将返回一个ID令牌
  • 您将ID令牌传递给验证它的web服务/web API,然后将“应用令牌”返回给应用。应用程序令牌的最简单形式是GUID。您的后端应该跟踪所有已发布的应用令牌,例如在数据库中
  • 从现在起,所有后续API调用都将使用app token进行授权;B2C发行的所有代币不再需要,您应该丢弃它们
  • 注销时,调用API使后端上的不透明令牌失效或删除。您还应该尝试从B2C注销,以防用户会话很短,B2C会话尚未过期

  • 注意:如果您需要访问使用Oauth2并依赖B2C颁发的访问令牌的第三方服务,这显然不起作用。

    如果您设置SessionExpiryType=Rolling。那么你只需要每68年登录一次!是的,我想用它来调用B2C安全API,所以我需要有有效的访问令牌。但是谢谢你的主意。