【问题标题】:Can we Protect 3 microservices api project with asp net identity jwt token?我们可以用 asp net identity jwt 令牌保护 3 个微服务 api 项目吗?
【发布时间】:2020-02-06 18:40:41
【问题描述】:

我正在使用 asp net core 3 构建微服务。我的问题是我可以使用 asp net 身份保护微服务吗?例如,一个保护 3 个微服务项目的身份项目。我不想使用身份服务器。

【问题讨论】:

    标签: c# asp.net-core jwt asp.net-identity microservices


    【解决方案1】:

    我不想使用身份服务器。

    仅使用 ASP.NET Core 和 ASP.NET Core Identity?

    不,那是不可能的。 ASP.NET Core Identity 不具备生成 JWT 令牌的能力,仅支持 Cookie 身份验证。

    对于 JWT,您需要

    • 使用 OpenIDConnect/OAuth2 提供者(IdentityServer 是一个,OpenIddict 是另一个开源 OIDC 提供者)
    • 使用外部 OIDC/OAuth 提供程序(Auth0、Google、Facebook、Twitter 等)
    • 自己生成 JWT 令牌(除非您非常了解 JWT/ODIC 并且是安全专家,否则不建议这样做,因为其中的错误/不完整实现可能会导致严重的安全问题,而不是已经存在的完善和强化的身份提供程序)

    我的问题是我可以使用 asp 网络身份保护微服务吗?

    通常,您可以使用 JWT 令牌保护尽可能多的微服务。

    但要记住的一点是:OpenID/JWT 令牌不是用于授权,而是用于身份验证。身份验证意味着验证用户的身份。

    因此,除了“范围”之外,您不应将权限放在这些令牌中。细粒度的权限需要由服务自己管理,使用token来识别用户并获取细粒度的权限。

    关于最后一个主题Identity vs Permissions 是一篇有用的文章,可以更好地理解这一点。

    【讨论】:

    • AspNetCore 3.0:"Authentication and authorization for SPAs" 章节提到了 JWT Bearer。在创建带有身份验证的 AspNetCore 3.0 Angular 时查看生成的代码,可以看到 OidcConfigurationController,以及 ClientApp(这是一个 Angular8 代码)包含用于实现身份验证的 OIDC 流的配置特征。同样,AspNetCore3.0 正在使用 IdentityServer4,它允许发出/验证 JWT。
    • @mihai:那是与操作不想使用的 IdentityServer(一个非微软开源项目)一起使用。包含 WebAPI 的新 ASP.NET Core 模板附带了对 IdentityServer jwt 授权的支持。 ASP.NET Core Identity 没有生成 JWT 令牌的功能。您只能通过 AddJwtBearer 调用使用 JWT 令牌
    • 从链接文章的第一段可以明显看出:ASP.NET Core 3.0 或更高版本使用 API 授权支持在单页应用程序 (SPA) 中提供身份验证。用于验证和存储用户的 ASP.NET Core Identity 与用于实现 Open ID Connect 的 IdentityServer 相结合。
    • 感谢@Tseng。您能否看到下面的图片并表达您对在这种情况下谁发出 JWT 的想法?那是VS 2019生成的一个应用,项目AspNetCore 3.0 + Angular SPA + Authentication(个人用户账户)The snippet with some comments我不反对你说的,只是想揭开这个区域,让问题的主人了解更多: )
    • 这似乎是唯一使用 IdentityServer 作为内置模板用于 JWT 生成的模板。但是,是的,它基于 IdentityServer... 只是为了在该线程中带来更多亮点 :)
    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 2017-05-31
    • 2020-06-20
    • 2019-02-08
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多