当前位置: 首页 > 面试题库 >

将多个客户端添加到Spring OAuth2 Auth Server

罗飞宇
2023-03-14
问题内容

我有Spring OAuth授权服务器,我想增加对一个以上client(id)的支持。我这样配置客户端:

clients
            .inMemory().withClient(client).secret(clientSecret)
            .resourceIds(resourceId)
            .authorizedGrantTypes("client_credentials", "password", "refresh_token", "implicit", "authorization_code")
            .authorities("ROLE_USER")
            .scopes("read", "write")
            .autoApprove(true)
            .and()
            .inMemory().withClient("acme").secret("acmesecret")
            .resourceIds(resourceId)
            .authorizedGrantTypes("client_credentials", "password", "refresh_token", "implicit", "authorization_code")
            .authorities("ROLE_USER_ACME")
            .scopes("read", "write")
            .autoApprove(true);

我可以使用第一个客户端获取访问令牌,但是尝试使用第二个客户端获取访问令牌时出现此错误:

{
  "timestamp": 1456822249638,
  "status": 401,
  "error": "Unauthorized",
  "message": "Bad credentials",
  "path": "/oauth/token"
}

是否可以添加多个客户端,以及如何添加呢?那么,如何从数据库读取客户端?


问题答案:

不要使用多个inMemory构建器,而是将多个withClients 连接在一个内部inMemory

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
    clients.inMemory()
                .withClient("first")
                .secret("secret")
                .scopes("read")
                .authorizedGrantTypes("password")
            .and()
                .withClient("sec")
                .secret("secret")
                .scopes("read")
                .authorizedGrantTypes("password");
}


 类似资料:
  • 该快速入门将展示如何搭建一个 JavaScript 客户端应用程序,其中的用户将登陆到 IdentityServer,使用 IdentityServer 发布的访问令牌调用 Web API,然后从 IdentityServer 注销。 新的 JavaScript 客户端项目 创建一个新的 JavaScript 应用程序项目。这可以是一个简单的空的 Web 项目,或者空的 ASP.NET Core

  • 我试图使用Keycloak rest API向特定用户添加客户端级别的角色。我在邮递员尝试这个,但不断得到404找不到。 https://{keycloak url}/auth/admin/realms/acme/users/b62dc517-0dd8-41ad-9d97-f385e507e279/role-mappings/clients/6b1f23b4-6bec-4873-a991-4b7e

  • 问题内容: 我有一个GWT项目。客户端代码位于“客户端”目录中。我想附加外部目录中的外部Java类(主要是普通的POJO DTO类)。如何配置gwt.xml文件? 我收到此类错误: [错误]“文件:/ C:/development/projects/CodeSpaces/LocateMe/LocateMeWeb/src/com/dominolog/locateme/client/LocateMeW

  • 问题内容: RMI是否自己处理多个客户端?即 是否可以同时使用多个客户端的服务器功能? 如果没有,我该怎么做? 如果是,它如何工作?每次 调用 都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 问题答案: 是 这个怎么运作?每次调用都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 它为每个客户端连接创建一个线程。 如果一个客户端调

  • 所以我想的是: 除了在外部mods文件夹中有一个Mod之外,有没有一种方法可以将整个内容打包到客户端?安装大约500个模块。。。不好玩。将它们打包成一个jar(客户机本身)并内置所有mod?节省安装时间。很多。有什么帮助吗?

  • 问题内容: 好吧,我正在尝试使用SocketServer构建一个小型python prgram,该服务器应该将其接收的消息发送给所有连接的客户端。我被困住了,我不知道如何在服务器端存储客户端,也不知道如何发送到多个客户端。哦,我的程序每次连接1个以上的客户端时失败,并且每次客户端发送的1条以上消息都失败… 到目前为止,这是我的代码: 显然,我不知道自己在做什么,所以任何帮助都将非常有用。 提前致谢