如何使用 Identity Server 4 保护 Asp.net 核心 2.1 和 Vue.js 单页应用程序
How to protect Asp.net core 2.1 and Vue.js single page application with Identity Server 4
实际上我对架构师有点困惑,因为我有 2 个独立的应用程序和 1 个 Identity Server4 应用程序,AspNet 核心 2.1 API 解决方案之一 运行 在不同的域和服务器上和其他2一样。
现在我有以下几点:
- 已将我的客户端应用程序(即 Vue.js SPA)添加为具有隐式模式的 Identity Server4 中的客户端,因为它是 Js 客户端
- 我是否需要在 IDP Server 中添加 API 应用程序作为客户端。
- 如果是,那么如何使用 Axios 从 VUE.js 调用任何 API,因为当从 Vue.js 应用程序登录时,它将获得此客户端的令牌,并将用于显示隐藏网页的按钮或我的部分。
- 我有点困惑,我是否应该使用我为 vue.js 客户端获得的声明来验证 API。
- 如果我在 Identity Server 4 中注册 API 客户端如何从 vue.js 客户端应用程序调用 api。
您应该将 API 添加为 ApiResource 而不是客户端,然后在 Startup.xml 中注册它。您可以查看 JS 应用程序的快速入门,其中所有内容都在此处配置:https://github.com/IdentityServer/IdentityServer4.Samples/tree/master/Quickstarts/6_JavaScriptClient。
在 javascript 客户端中,您需要调用身份服务器并进行身份验证。有一个图书馆可以为您做这件事:https://github.com/IdentityModel/oidc-client-js。它也在快速入门中使用,因此您可以看到它是如何完成的。
在每次调用 API 时,授权 header 必须使用您从身份服务器获得的访问令牌设置为 "Bearer "。另外不要忘记在 API.
中设置 Jwt Bearer Authentication
我在之前提到的快速入门中所说的一切都有示例代码。
实际上我对架构师有点困惑,因为我有 2 个独立的应用程序和 1 个 Identity Server4 应用程序,AspNet 核心 2.1 API 解决方案之一 运行 在不同的域和服务器上和其他2一样。 现在我有以下几点:
- 已将我的客户端应用程序(即 Vue.js SPA)添加为具有隐式模式的 Identity Server4 中的客户端,因为它是 Js 客户端
- 我是否需要在 IDP Server 中添加 API 应用程序作为客户端。
- 如果是,那么如何使用 Axios 从 VUE.js 调用任何 API,因为当从 Vue.js 应用程序登录时,它将获得此客户端的令牌,并将用于显示隐藏网页的按钮或我的部分。
- 我有点困惑,我是否应该使用我为 vue.js 客户端获得的声明来验证 API。
- 如果我在 Identity Server 4 中注册 API 客户端如何从 vue.js 客户端应用程序调用 api。
您应该将 API 添加为 ApiResource 而不是客户端,然后在 Startup.xml 中注册它。您可以查看 JS 应用程序的快速入门,其中所有内容都在此处配置:https://github.com/IdentityServer/IdentityServer4.Samples/tree/master/Quickstarts/6_JavaScriptClient。
在 javascript 客户端中,您需要调用身份服务器并进行身份验证。有一个图书馆可以为您做这件事:https://github.com/IdentityModel/oidc-client-js。它也在快速入门中使用,因此您可以看到它是如何完成的。
在每次调用 API 时,授权 header 必须使用您从身份服务器获得的访问令牌设置为 "Bearer "。另外不要忘记在 API.
中设置 Jwt Bearer Authentication
我在之前提到的快速入门中所说的一切都有示例代码。