我需要您在混合应用程序中使用keycloak进行身份验证的帮助。
我用docker运行keycloak。我用ionic3,angular@4.1.3和cordova编写了一个移动应用程序。
我创建了我的领域" demo",以及一个客户端" demo-client"使用有效的重定向网址= http://localhost和网络来源= http://localhost。 我已将此package.json:
上传到我的应用{
"realm": "demo",
"auth-server-url": "http://192.168.238.60:8080/auth",
"ssl-required": "external",
"resource": "demo-client",
"public-client": true
}
我还添加了whiltelist和inappbrowser插件。
当我启动我的应用程序并单击登录时,我在inappbrowser中获得了keycloak的登录页面。我注册然后回到我的应用程序perfeclty。但是我仍未在我的应用中进行身份验证,但我的会话在keycloak管理控制台中完全打开。
似乎我没有从我的应用程序中的keycloak服务器获取令牌和会话信息。
互联网上没有任何使用这些技术的信息。如果某人已经涉及这些问题,那么帮助我将是非常好的。
最后一件事,当我在浏览器上使用" ionic serve"打开我的应用程序时,一切正常。认证有效!!
=>似乎信息没有从浏览器回到应用程序。
以下是我初始化keycloak的方法。
在main.ts上
KeycloakProvider.init({ onLoad: "check-sso",checkLoginIframe: false })
.then(() => {
platformBrowserDynamic().bootstrapModule(AppModule);
})
.catch((e: string) => {
console.log('Error in ng2 bootstrap: ' + e);
});
提供者是:
const Keycloak = require('keycloak-js');
@Injectable()
export class KeycloakProvider {
static keycloakAuth: KeycloakInstance = Keycloak("assets/keycloak.json");
static init(options?: any): Promise<any> {
console.log(JSON.stringify(KeycloakProvider.keycloakAuth));
return new Promise((resolve, reject) => {
KeycloakProvider.keycloakAuth.init(options)
.success(() => {
resolve();
})
.error((errorData: any) => {
reject(errorData);
});
});
}
}