【问题标题】:Using IdentityServer with ASP.NET + embedded SPA JS framework将 IdentityServer 与 ASP.NET + 嵌入式 SPA JS 框架一起使用
【发布时间】:2018-08-08 02:44:57
【问题描述】:

如果标题不是很清楚,我很抱歉。

我所拥有的:来自此存储库的“嵌入式”Vue.js 2 的 ASP.NET 应用程序:https://github.com/MarkPieszak/aspnetcore-Vue-starter

我已经研究过 Identity Server 4 手册,因此我尝试了使用纯 ASP.NET 的混合流和使用带有纯 JS 的 oidc-client 的隐式流。两种流程都适合我。

但我想要的是使用托管在 ASP.NET 中的 JS 页面来获取访问令牌和刷新令牌并将它们存储在 ASP.NET 中。在这种情况下,ASP.NET 充当后端(但不是资源 API!)。

也许(可选)有一种方法可以创建自定义登录表单。用户填写此表单,JS 将登录名和密码发送到 ASP.NET 后端,然后将它们传输到 Identity Server 并检索令牌。

我想知道是否有可能使用这样的场景,以及它是否可行且足够安全。

欢迎提出任何假设!

编辑: 我真正想要的是使用 Vue 来显示我的数据,同时使用 ASP.NET 作为从资源 API 收集信息的后端客户端。

【问题讨论】:

    标签: javascript asp.net identityserver4


    【解决方案1】:

    关于登录页面 - 不,你不能。原因 - 使用 OIDC 身份验证时,您将登录功能委托给提供者(在您的情况下为身份服务器),它负责登录页面等。

    现在关于您的 Vue 应用程序。 Vue 是一个 SPA。 SPA 只能使用 Implicit 授权类型,因此 - 它们不会被授予刷新令牌。

    您的解决方案是在您的 Vue 应用程序中使用 oidc-client-js 库。我们已经实现了这个场景(Vue 在 aspnet 核心之上)并且运行良好。

    【讨论】:

    • 我使用了 oidc-client 并且只在 JS SPA 中访问令牌。但是使用 ASP.NET 作为主机有什么好处呢?它将在这种情况下充当资源 API,这不是我想要的。我希望 ASP.NET 也成为客户端。此外,对我来说最好的解决方案是在 ASP.NET 级别执行所有身份验证,并且仅使用 JS 来显示结果。
    • 那么您的客户端将是 ASP.NET,您可以执行混合授权类型。您必须选择 - 托管它的 SPA 或 ASP.NET 应该是客户端。你不能两个都去。如果你想让 ASP.NET 成为你的客户端,并且只使用 JS 来显示结果,那你为什么需要 Vue?
    • @ m3n7alsnak3 我使用 Vue 只是因为我不了解前端,这是我学习的第一个框架 :) 而且我不想使用 Razor 页面,因为它们不如 Vue 方便用于我的目的的组件。您能否建议我仅将 js 用于可视化的方法?如我所见,我可以在 Razor 上创建 corse 页面进行登录,然后使用 Vue.js 显示结果,但它对我来说看起来有点难看。
    • @xneg - 听起来也有问题。你不应该混合它们。首先 - 如果您不想通过 API 调用来检索数据,您将如何在 Vue 中显示数据?您也不想使用 Razor 页面。你将如何向 Vue 提供数据?你在这里混合概念。
    • 这就是我问的原因。当然,我会从 Vue 调用控制器方法,但我不希望它保留任何令牌。我希望将令牌存储在 ASP.NET 端。再次,如果这是不可能的 - 好的。但我试图理解是什么概念打破了使其成为不可能。
    猜你喜欢
    • 2015-06-18
    • 2023-03-31
    • 2020-11-11
    • 2017-03-08
    • 2023-04-11
    • 2015-07-26
    • 2016-06-17
    • 1970-01-01
    • 2015-01-10
    相关资源
    最近更新 更多