OAuth2.0 安全性如何在移动应用程序中发挥作用?如果 client_id 遭到破坏会怎样?

How does OAuth2.0 security works in Mobile APPs ? What happens if client_id gets compromised?

Web 应用程序中的 OAuth 2.0 使用重定向 URI,其中身份验证提供程序重定向到重定向 URI,并在使用访问令牌进行重定向之前与开发人员在应用程序注册期间提供的已注册 URI 进行相同的验证。

对于移动应用程序,由于没有指向移动应用程序的重定向 URI,它是如何工作的?

如果有人获得客户 ID,他们可以使用相同的客户 ID 来构建重复的应用程序吗?安全性在上述情况下如何运作?

因为移动应用程序无法保证 client_secret 的机密性,所以它们可以使用不需要它的授权类型。这就是Implicit Grant。这个想法是使用 response_type=token 参数将移动浏览器重定向到授权端点:

https://example.com/authorize?response_type=token&client_id=CLIENT_ID&redirect_uri=http://REDIRECT_URI

根据身份提供者对用户进行身份验证后,浏览器将被重定向回授权请求中指定的 redirect_uri 并传递访问令牌:

http://REDIRECT_URI/#token=ACCESS_TOKEN

然后您可以在浏览器中拦截对这个特制 url 的请求(通过订阅 url 更改时触发的相应事件),提取传递的访问令牌并使用此令牌发出经过身份验证的请求。

If someone gets client id, Can they use same to build duplicate app ? How does security works in above scenario?

OAuth 2 并非旨在保护您应用程序的知识产权 属性。它是一种身份验证协议。不管有没有它,任何人都可以复制您的应用程序。这个想法是,如果没有 client_secret,应用程序将无法使用需要它的授权类型,并且通常会为已颁发的访问令牌提供更多权限和范围。