Blazor 服务器应用程序中的身份服务器和客户端机密

Posted

技术标签:

【中文标题】Blazor 服务器应用程序中的身份服务器和客户端机密【英文标题】:Identityserver and client secrets in a blazor server app 【发布时间】:2021-10-29 00:38:26 【问题描述】:

我有一个 Identityserver 和一个 blazor 服务器应用程序正在运行,我正在使用 code 工作流来获取我的令牌。我的 blazor 应用程序有一个秘密,但刚刚发现,当我在身份服务器中的客户端配置中省略秘密并将属性 RequireClientSecret 设置为 false 时,我也可以获得我的令牌。我可以看到,这对于您不想通过 webapp 传输秘密的纯 javascript 应用程序是必需的。这是否也适用于 blazor 服务器应用程序?我想不会,但我想确定的是,我不能那样泄露我的秘密。另一个问题是:如果我可以忽略这个秘密,在什么情况下仍然使用它会有用?据我了解,如果没有秘密,我只能通过控制重定向 uri 来防止有人不冒充客户端。例如。没有 localhost 作为产品上的有效重定向 uri。但除此之外,在 Blazor 服务器应用程序中,秘密还能给我什么? (当然,如果不能像那样通过 blazor 泄露秘密)。

【问题讨论】:

【参考方案1】:

Blazor 服务器应用位于 ASP.NET Core 应用的进程中,并使用其 startup.cs 文件。因此它的所有配置只有服务器知道。 Blazor Server 应用程序中负责 websockets 连接的瘦 Javascript 客户端无法控制它。

Link discussing the benefit of Client Secrets in OAuth2

【讨论】:

好的,非常感谢,不确定是否真的没有任何东西可以泄露给客户端。

以上是关于Blazor 服务器应用程序中的身份服务器和客户端机密的主要内容,如果未能解决你的问题,请参考以下文章

简单服务器端Blazor Cookie身份验证的演示

身份剃须刀页面中的 Blazor 组件

Blazor 客户端中的 Identityserver4 未授权 api

Blazor IdentityServer 身份验证

在 Blazor 中的视图之外访问经过身份验证的用户

使用现有数据库表中的用户名和密码在 Blazor 中进行身份验证?