【问题标题】:Azure AD - MSAL.js - ssoSilent() vs acquireTokenSilent()Azure AD - MSAL.js - ssoSilent() 与 acquireTokenSilent()
【发布时间】:2023-02-16 22:03:55
【问题描述】:

试图弄清楚。 MSAL.js 中的 ssoSilent()acquireTokenSilent() 有什么区别?

两者似乎都获取了一个内部有令牌的身份验证对象。好吧,您可以在不提供帐户的情况下致电ssoSilent(...)。但是您可以通过instance.getAllAccounts()[1] 获取这些信息,然后致电acquireTokenSilent(...),但这听起来并不合理。

我在某处发现,你应该在登录时调用ssoSilent(...),然后在调用 API 时只调用acquireTokenSilent(...),但 acquireTokenSilent(...) 本身似乎可以完成所有工作。

有人可以澄清一下,它们有何不同/何时使用哪个?

【问题讨论】:

    标签: typescript azure azure-active-directory msal.js


    【解决方案1】:

    MSAL 提供静默登录或 SSO 两种方法。但有些情况下您需要使用交互式方法。例如,由于某些浏览器中存在第三方 cookie 限制插件,ssoSilent 请求将失败尽管与 Azure AD 的活动用户会话。作为补救措施,您可以将 prompt 值作为 none 传递给交互式请求,例如 loginPopup。然后,MSAL.js 将打开一个指向 Azure AD 的弹出窗口,Azure AD 将通过使用现有的会话 cookie 来遵守提示值。在这种情况下,用户将看到一个简短的弹出窗口,但不会提示输入凭据。

    【讨论】:

      【解决方案2】:

      ssoSilent 当应用程序想要利用现有的 AAD 会话(暗示交互屏幕,例如,不需要同意,并且用户上下文是使用不同的身份验证方法与 AAD 服务建立的)并从服务中获取新令牌时,应调用。

      当用户在使用 MSAL JS 之前获取令牌、调用交互式 API(loginPopup/acquireTokenPopup、loginRedirect/acquireTokenRedirect)并希望 MSAL JS 从缓存中获取未过期的令牌作为首选时,acquireTokenSilent 是首选。

      当令牌过期/或无法为这两个 API 静默更新时,会有更多细微差别。

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 2017-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 2018-09-24
        相关资源
        最近更新 更多