- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
https://identityserver4.readthedocs.io/en/release/intro/support.html
我目前在我的 Web api 中使用 JwtSecurityToken
自己发行 token 我使用标准 ASP.NET Core 中间件调用 AddJwtBearer
验证 token 。它工作正常。
与上述方法相比,使用 OpenID Connect(通过 IdentityServer4)会给我带来什么优势?如何回答自己的问题“我需要 OpenID Connect 吗?”
根据我对 OpenID Connect 的基本了解,它用于允许第三方访问您的 API。但是我为自己而不是为第三方制作 API,我不知道为什么我应该偏爱 IdentityServer/OpenIddict 而不是我的简单方法。
我读到如果我想要单点登录,我应该使用它,但是 JWT 本身并不绑定(bind)到任何特定域,我可以只使用纯 JWT 的单点登录(它们是自包含的)
我知道它实现了某种发行 token 的标准。 (协议(protocol))。如果我希望向第三方公开一些 API,那可能会很好。但是对于内部 API?值得使用吗?
这是我当前的身份验证流程(来自 https://jonhilton.net/2017/10/11/secure-your-asp.net-core-2.0-api-part-1---issuing-a-jwt/)
我真正想要实现以保护我的 Web API:
最佳答案
在任何情况下,您都将实现 OAuth2。将 Oidc 视为 OAuth2 的扩展。要记住的最重要的事情是分离关注点。
忘记 Oidc,Identity Server 4 就是关于身份验证的:“谁是用户”?考虑谷歌登录。当用户第一次登录时,应用程序不知道用户,它只知道 Google 知道。
授权发生在不同的级别上,并不是 IdentityServer 真正关心的问题。为此,您可以查看 PolicyServer .
因此,您需要将用户数据库与应用程序数据库分开。这并不意味着您需要另一个数据库,只是不要混合上下文。如果您与“业务环境”有关系,例如“身份上下文”中的用户表,那么您最终会遇到问题。
在您的设置中,您的 Web api 既是资源又是身份提供者。这意味着您创建的每个新 Web api 都必须作为资源和身份提供者来实现。为了可维护性,您可以创建一个单独的 web api 作为身份提供者,而 web api 只是一个资源。只要所有应用程序都可以读取 token ,您就可以实现类似的东西。
前面也一样。为什么前面要和用户有关系?它需要做的就是传递 token 以获得用户授权。在 IdentityServer 的情况下,应用程序会联系它以验证用户并接收 token 。它对凭据一无所知。这更安全。客户端应用程序可能会受到损害。凭证可以被截取。
拥有具有特定关注点的单个应用程序使事情更易于维护。在使用 IdentityServer 时,无需编写代码即可轻松添加新资源。只需添加配置。它还允许您在将来添加目前不需要的其他流。作为旁注,同意屏幕是可选的。
好处是您可以实现 SSO,在您的设置中,如果不是不可能的话,这可能会更难。
因此,您不必使用 IdentityServer,也不必使用 Oidc。您的设置可能很好。但是,如果您构建某些东西,请记住分离关注点。
关于c# - 自己发行 JWT token 与使用 IdentityServer4(OIDC) 进行 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49781664/
在登录并同意后使用任何标准身份提供者(谷歌、Facebook)时,他们会重定向到我的主要身份服务器,并让它重定向到在其中注册的隐式客户端。我如何使用另一个身份服务器作为外部身份提供者实现相同的行为?
我正在开发一个 SPA Web 应用程序,并且我正在使用 IdentityServer4 代码流来处理授权。所以我有以下组件: Angular 客户端应用程序,https://localhost:50
我正在设置 IdentityServer 的一个新实例作为身份提供者。登录时,我想在我的用户对象上设置一些额外的自定义声明。现在,我正在使用以下代码: [HttpPost] public async
我正在尝试遵循本指南 https://identityserver.github.io/Documentation/docs/advanced/customizingViews.html通过将 ass
当使用 IdentityServer 3 时签名证书(用于签名 jwt token )过期会发生什么? 我不清楚,我找不到任何文档,除了可能会收到它已过期的警告。 (Ref. https://iden
我有一个使用 IdentityServer4 进行 token 验证的 API。 我想使用内存中的 TestServer 对这个 API 进行单元测试。我想在内存中的 TestServer 中托管 I
我正在尝试将 Identity Server 4 与 Ocelot 集成并对 WebApp (asp.net core 3.1) 进行身份验证,然后在请求通过身份验证时访问 api。 为此我创建了一个
如果您有多个客户端和一个处理用户身份验证的中央 IdentityServer 4 实例,您将如何管理各个客户端的用户配置文件? 当前情况: 用户点击“管理个人资料” 用户被重定向到 IdentityS
我正在开发一个带有 angular 的前端应用程序和一个带有 Asp.Net Core 的后端应用程序,其中包含用于身份验证的 IdentityServer4(基于此 github project)。
我有一个包含用户的数据库,我该如何开始使用 IdentityServer 创建我的用户的自定义实现?我看到的所有示例都使用了用值硬编码的 InMemoryUser。 有人可以关注this作为指南? 最
我们公司有一个 SSO 应用程序,我希望用 IdentityServer4 或 3 替换大部分身份验证管道。我要替换的版本有自己的动态客户端注册自定义实现(不符合规范)和一个 UI 来管理它。 有nu
我正在使用 IdentityServerV3 对少数客户端的用户进行身份验证。我在配置 IdentityServer 时遇到问题,特定的 user 必须能够登录到特定的“客户端”。 让我们来看下面的场
目前我们正在使用 JWT token 进行身份验证(有效),但我想使用引用 token 。目前我们的配置是这样的: public static class Config { ///
我在启动 IdentityServer 3 时遇到问题。这是一个非常简单的设置,我打算将其用于开发环境,但我在诊断问题时遇到了问题。这是我的代码: Startup.cs using Owin;
我正在使用来自 IdentityServer 4 实例的 OAuth2。基于this example ,我能够登录并调用服务器托管的 API。 如何在不显示提示用户确认注销的 Web View 的情况
我是 IdentityServer 3 的新手,示例和教程使用的是 InMemory 用户、客户端和范围,但我需要这些来自 DB。所以我做了: 启动.cs public void Configurat
我一直在阅读和观看有关 Identity Server 4 的大量内容,但我仍然对它感到有些困惑,因为它似乎有太多的事件部分。 我现在明白这是一个单独的项目,它负责对用户进行身份验证。我仍然不明白的是
我似乎无法理解为什么我会从 IdentityServer 获得 unauthorized_client。我将 oidc-client 与 Angular 4 ui 和 Web API 的 asp.ne
我在 IdentityServer 中设置了以下客户端: new Client { ClientName = "My web application", Enabled = true,
在本地,我有一组 Web 应用程序都可以通过一次登录访问。 为此,我采用了 Identity Server 4。 一旦应用程序发布在本地服务器上,无法远程访问,我就通过 openssl 生成了一个 S
我是一名优秀的程序员,十分优秀!