【发布时间】:2020-01-14 09:50:02
【问题描述】:
我创建了一个由 spring-security-keycloak-adapter 保护的 Spring Boot 服务。由于该服务已经知道(keycloak)身份提供者,因此我认为将 issuerUrl 和 clientId 发送到移动客户端以直接登录到 keycloak 没有任何意义。相反,我只想在客户端的 web 视图中调用服务的 loginurl。据我了解,spring 应该重定向到 keycloak 并最终返回令牌。 不幸的是,所有颤振包都需要 clientId 和 issuerUrl 用于 oauth 过程
我已经尝试过 openid_client 的颤振包
正如您在官方存储库中的以下代码示例中所见,它需要 clientId 和 issuerUrl
// import the io version
import 'package:openid_client/openid_client_io.dart';
authenticate(Uri uri, String clientId, List<String> scopes) async {
// create the client
var issuer = await Issuer.discover(uri);
var client = new Client(issuer, clientId);
// create an authenticator
var authenticator = new Authenticator(client,
scopes: scopes,
port: 4000);
// starts the authentication
var c = await authenticator.authorize(); // this will open a browser
// return the user info
return await c.getUserInfo();
}
【问题讨论】:
-
您的问题是什么?我问是因为听起来你已经有了如何使用颤振的答案——颤振确实需要 issuerUri 和 clientId 才能工作。
-
但是为什么需要这两个信息。当我在浏览器中打开受保护的 url 时,它已经将我正确重定向到身份提供者。所以没有其他选择可以向客户提供这些信息并直接联系身份提供者?
-
我已根据您的说明添加了答案。我还建议您更改帖子标题中的问题,以帮助其他有相同问题的 Flutter 用户。
标签: spring flutter spring-security dart openid-connect