【问题标题】:Authenticate Angular App Without User Credentials With OAuth and IdentityServer4使用 OAuth 和 IdentityServer4 在没有用户凭据的情况下验证 Angular 应用程序
【发布时间】:2019-05-06 19:47:36
【问题描述】:

我有一个与 Asp.net Core API 通信的 Angular 应用程序。它是一个公共应用程序,意味着用户无需指定用户名和密码即可使用它。

我想使用 IdentityServer4 来保护 API 免受直接操纵。在查看 IS4 上的各种凭证流时,客户凭证看起来很合适。然而,那里的所有帖子都在谈论授权代码流。

这是最好的下降路线还是一个坏主意?我怎样才能做到这一点?

【问题讨论】:

  • 代码流将用户发送到 IdentityServer 并在登录后将其重定向回客户端。使用客户端凭据没有往返,这使得客户端可以保密变得更加重要。在您的情况下,您可能希望实现一个需要往返但不需要验证用户的custom grant type

标签: angular asp.net-web-api identityserver4


【解决方案1】:

这里的主要问题是“信任的质量”。一般来说,根本不可能使公共 js 客户端受信任。任何人都可以在浏览器中打开控制台,复制请求,将其粘贴到 curl 或 postman 中并调用 api。但是,如果您只想阻止直接访问 get 方法而不在标头中使用不记名令牌,那么纯 Client Credentials 就足够了。否则,您必须实现一些特殊的东西,例如完全自定义授权,或更简单的CustomTokenRequestValidator,它将在正常流程(包括客户端凭据)中调用,并且您可以在其中执行一些额外的操作检查(两种方法都引用了here)。

【讨论】:

  • 坚持使用 SSL 和 Cors 会更容易完成我想做的事情吗(api 和 app 将在同一域的两个子域上运行)?
  • Cors 可以帮助阻止来自 js 的调用。如果您需要针对好奇的用户提供额外保护(将 get 请求复制粘贴到浏览器地址栏中),最好将 cors 与轻量级不记名令牌(或域范围的 cookie)结合使用
猜你喜欢
  • 2020-09-28
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2013-04-02
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多