Oauth 2.0 用于移动本机应用程序和纯JS客户端的OAuth 2.0客户端标识

Oauth 2.0 用于移动本机应用程序和纯JS客户端的OAuth 2.0客户端标识,oauth-2.0,oauth,identityserver4,identityserver3,Oauth 2.0,Oauth,Identityserver4,Identityserver3,我重新安装了OAuth文档,并理解这比授权代码流更好,因为它不太可能获取客户端代码并将其交换为access\u令牌 我还看到,在互联网上也有这样的案例,客户机密从大型移动应用程序(如facebook或twitter)中被撤销 所以对我来说,如何正确地实现客户身份仍然不清楚 e、 g.如果我使用资源所有者授权类型,我的应用程序中会存储客户端id和客户端机密,这可以反向工程,任何人都可以构建与我相同的应用程序 如果我使用带有验证密钥的授权代码流进行代码交换,我的应用程序中仍然没有任何秘密。因此,这意

我重新安装了OAuth文档,并理解这比授权代码流更好,因为它不太可能获取客户端代码并将其交换为access\u令牌

我还看到,在互联网上也有这样的案例,客户机密从大型移动应用程序(如facebook或twitter)中被撤销

所以对我来说,如何正确地实现客户身份仍然不清楚 e、 g.如果我使用资源所有者授权类型,我的应用程序中会存储客户端id和客户端机密,这可以反向工程,任何人都可以构建与我相同的应用程序

如果我使用带有验证密钥的授权代码流进行代码交换,我的应用程序中仍然没有任何秘密。因此,这意味着任何开发者都可以构建自己的应用程序,成为我应用程序的镜像

那么问题是,是否有任何方法可以正确地为移动应用程序和纯JS(浏览器)客户端实现客户端身份

更新 有两个很好的选择 1-使用重定向URL 2-设置CORS

1然而,我认为如果我试图用后端代码来模仿bahaviour,那将毫无帮助。例如,我真的不需要访问网站,就可以看到在某个时候,它会在标题中给出重定向,我只需要得到消息并拥有这个授权代码 2对于CORS也是如此,如果我的镜像站点我将从后端获取令牌,服务器将不会识别客户端不是原始客户端,并且有权使用此客户端

那么问题是,是否有任何方法可以正确地为移动应用程序和纯JS(浏览器)客户端实现客户端身份

根据,授权代码流必须进行客户端身份验证<代码>重定向URI是一个建议的解决方案,可帮助进行客户端身份验证。
以下是IDS4上帮助验证客户端的选项:

  • 在客户端配置上使用
    重定向URI
    ,指定允许的URI以返回令牌或授权代码
  • 使用。浏览器的同源策略阻止从不同的源读取资源。我们可以将我们的客户添加到允许的跨来源呼叫列表中
  • 代码示例:

    new Client
    {
        ClientId = "js",
        ClientName = "JavaScript Client",
        AllowedGrantTypes = GrantTypes.Code,
        RequireClientSecret = false,
        RedirectUris = { "https://localhost:5003/callback.html" },
        PostLogoutRedirectUris = { "https://localhost:5003/index.html" },
        AllowedCorsOrigins = { "https://localhost:5003" },
        AllowedScopes =
        {
            IdentityServerConstants.StandardScopes.OpenId,
            IdentityServerConstants.StandardScopes.Profile
        }
    }
    
    

    谢谢你的回复。AllowedCorsOrigins={”“},这正是我一直在寻找的。重定向URI我意识到这一点,并认为这是一个孤独的很长一段时间。但后来我意识到,为了获得令牌,你并不需要真正欠网站的钱,所以你可以检查流量,在重定向url的响应中,你只需要看到代码。所以这意味着理论上你们可以在并没有重定向url权限的情况下删除它(类似于邮递员我所做的事情),因为我知道这个概念将在手机上运行。但是在这种情况下,您必须重定向到浏览器,并将login和passowrd放在那里。我只是想知道,如果我在移动应用程序中有自己的登录屏幕并想使用它,并且尝试不在移动应用程序中的某个地方存储客户端机密,那么最好使用什么流程?有没有解决这个问题的好方法?你说的就是所谓的。PKCE是缓解这一问题的解决方案。简单地说,拥有客户端身份验证(clientId+redirecturl+CORS)+PKCE使得黑客攻击变得更加困难。因为涉及多个检查和随机生成的值。中间人应该坐在用户的机器上进行网络钓鱼以获得成功。阅读更多PKCE是本机应用程序的官方推荐(参考:)