我有一个 ionic 应用程序,我正在 Android 设备上开发和部署它。我在应用程序中使用 angular-auth-oidc-client 进行用户身份验证。这是我的配置: 注意:为简洁起见,sts server 和 clientId 被省略,它们不相关。
scope: 'openid profile tino_access',
silentRenewUrl: `${window.location.origin}/silent-renew.html`,
responseType: 'code',
postLogoutRedirectUri: window.location.origin,
silentRenew: true,
silentRenewUrl: `${window.location.origin}/silent-renew.html`,
logLevel: LogLevel.Warn,
postLoginRoute: window.location.origin,
useRefreshToken: true,
我确信一切都设置正确,因为在网页上访问我的移动应用程序时一切正常,并且身份验证正确通过。 但是,在移动设备上部署时(来源是本地主机),在访问 Keycloak 登录页面并正确输入登录凭据后,会向 STS 服务器发出请求以验证令牌。我需要将其发送到服务器,但我希望我的应用程序在 localhost 域上运行。如果我将 redirectUrl 正确设置为服务器,那么它可以工作,但该应用程序不再是本地应用程序,它只是网页的镜像。
我可以看到这是一种用于存储和检查会话令牌的机制,但很明显为什么它不能在移动设备上工作。有人知道可能的解决方案/解决方法吗?
谢谢
答案 0 :(得分:1)
网络和移动 OAuth 之间存在差异,总结如下:
一些技术栈试图对网络和移动设备使用相同的解决方案。这可能适用于渲染,但不适用于 OAuth。相反,对于移动应用,您需要遵循 OAuth for Native apps 指南。
移动解决方案通常称为 AppAuth 模式。要在 Android 上开始使用它,不妨从我的 Android AppAuth Sample Page 开始。