跳转至

移动应用 / Web SPA 的单点登录

如果您正在构建基于令牌的网站或移动应用,可以通过 SDK 启用单点登录(SSO)功能。

启用 SSO 后,终端用户在登录第一个应用时仍需输入身份验证凭据。之后登录第二个应用时,会看到一个继续屏幕,只需点击一下即可登录,无需再次进行身份验证。

说明

请注意,启用 SSO 功能时,进行身份验证时不要设置 prompt 参数(例如 prompt=login),否则会强制显示登录页面。

当终端用户从启用了 SSO 的应用登出时,所有应用都会同时登出。

配置 SDK 时,将 is sso enabled 选项设置为 true,即可开启此功能。

authgear.configure({
    clientID: CLIENT_ID,
    endpoint: ENDPOINT,
    sessionType: "refresh_token",
    isSSOEnabled: true,
});
authgear.configure({
    clientID: CLIENT_ID,
    endpoint: ENDPOINT,
    isSSOEnabled: true,
});
final authgear = Authgear(
    clientID: CLIENT_ID,
    endpoint: ENDPOINT,
    isSsoEnabled: true,
);
var authgearOptions = new AuthgearOptions
{
    ClientId = CLIENT_ID,
    AuthgearEndpoint = ENDPOINT,
    IsSsoEnabled = true,
};
// Android
#if __ANDROID__
var authgear = new AuthgearSdk(GetActivity().ApplicationContext, authgearOptions);
#else
#if __IOS__
var authgear = new AuthgearSdk(UIKit.UIApplication.SharedApplication, authgearOptions);
#endif
#endif
Authgear(
    clientId: CLIENT_ID,
    endpoint: ENDPOINT,
    isSSOEnabled: true,
)
new Authgear(
    getApplication(),
    CLIENT_ID,
    ENDPOINT,
    new PersistentTokenStorage(getApplication()),
    true // isSsoEnabled = true
);

这类 SSO 需要在移动应用和系统浏览器之间共享 Cookie,因此底层在 iOS 上使用 ASWebAuthenticationSession,在 Android 上使用 Custom Tab,会弹出如下弹窗:

如果想避免出现上述弹窗,需要改为在 iOS 上使用 WKWebView、在 Android 上使用 WebKitWebView 作为 UIImplementation;并改用 App2App 登录 在移动应用之间共享登录会话,以及使用预验证 URL在移动端和 Web 端之间共享。