单独托管 API 和 IdentityServer4 主机(C#、.NET CORE)有哪些优势? [关闭]

2023-12-09

也许我要问的问题非常明显和简单,但作为 IdentityServer4 的初学者以及或多或少的 oAuth2、OpenID 和 API 的初学者,我发现它很难理解。

我们公司的目标是使用身份验证和授权转向更安全的应用程序构建方式(Visual Studio 2017、C#、.NET Core 2)。经过几天的研究,我最终使用了 IdentityServer4(也是因为文档真的很棒)。

遵循 IdentityServer 文档(https://media.readthedocs.org/pdf/identityserver4/release/identityserver4.pdf)到第七章,我还剩下一本书。

我正在尝试构建一个带有 API 后端的 MVC 应用程序(Web),用于检索/插入数据,以便稍后可以将该 API 用于其他应用程序,例如 SPA / Xamarin 应用程序。对于 IdentityServer 主机,我选择了具有 asp.net 身份的 IdentityServer。我让它运行起来,一切都很好,但是仍然存在以下问题:

托管我的 API(我想在其中处理数据库操作)与 IdentityServer 主机一起有哪些缺点? 对我来说,拥有这么多不同的项目似乎不合逻辑,而(据我所知)这两个项目(API 和 IdentityServer 主机)可以完美地结合在一起。

在(几乎)所有 IdentityServer4 示例中,IdentityServer 主机和 API 都是单独的项目,将这两个项目托管为单独的项目有哪些优势。


我会说单一责任。

像这样对待它 - Identity Server 是一个框架,它为您提供针对客户端/API 的身份验证。就是这样! (当然,这一切都是根据您的规则、政策等完成的)。

Identity Server 的目的不是从数据库中添加/编辑/删除用户。身份服务器的目的不是为该用户分配角色。 最重要的是 - 身份服务器的目的不是授权此用户。

所有这些都必须在您的clients/api 中完成。

在你的情况下 - 你需要一个单独的API来照顾用户(以及你需要的其他数据),但我猜你希望这个API受到Identity Server的保护。

这就是分离的来源,并且应该保留 - Identity Server 不应该针对自己验证自己的 API。

所有示例、文章等都位于单独的项目中是有原因的。

PS:当然有一些实现这一点的例子(达米恩博德的一个很好)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单独托管 API 和 IdentityServer4 主机(C#、.NET CORE)有哪些优势? [关闭] 的相关文章

  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 为什么'enable_if'不能用于禁用这里声明

    include
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • 使用 MS NMAKE 打印长编译行

    我有一个遗留的 MS NMAKE Makefile 我需要修复其中的一些错误 我希望调试一些非常长的命令行 这些命令行正在使用 NMAKE 技巧执行 内联文件 http msdn microsoft com en us library se
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • 在 Elasticsearch php API 中使用多种类型或索引

    我想使用查询多种类型和索引Elasticsearch PHP API 但我不知道怎么办 我应该将类型和索引的数组传递给 params params index index array of indices params type types
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include

随机推荐

  • 使用 .htaccess“欺骗”404 未找到错误

    我目前已将 htaccess 设置为通过以下方式将没有句点或斜杠的任何内容重写为具有 php 扩展名的等效内容 因此 foo 在内部拉起 foo php RewriteCond REQUEST FILENAME f RewriteCond
  • 使用多个键合并Python字典列表

    我想使用多个键合并两个字典列表 我有一个包含一组结果的字典列表 l1 id 1 year 2017 resultA 2 id 2 year 2017 resultA 3 id 1 year 2018 resultA 3 id 2 year
  • 如何使用 onclick 事件将 Javascript 变量传递到 PHP

    我正在尝试将 JavaScript 变量传递给 PHP 以便我可以创建一个 MySQL 查询来返回单个记录 用户将输入一个搜索字符串 无论有多少记录都包含匹配的字符串 该搜索字符串都会返回 然后用户将选择他们想要查看的单个记录 这是我的 H
  • Grails 和 Spring Security:与加密模块 PasswordEncoder 一起使用时,Salt 值必须为 Null

    我几乎完成了 Grails 2 2 1 到 2 3 4 以及 Spring Security Plugin 1 2 7 3 到 2 0 RC2 的升级 我正在运行该应用程序 但是当我尝试登录时 我得到 java lang IllegalAr
  • 持久化嵌入表单

    我正在尝试使用设置一些嵌入式表单this指导 我在我的应用程序中设置了两个模型 课程和评估 每节课可以有多个评估 我设置了一个表单 用户可以在其中创建课程 并在该课程中进行任意数量的评估 提交表单后 它会成功创建课程记录和所有评估记录 但是
  • 您已经激活了 X,但您的 Gemfile 需要 Y

    跑步时rake我收到此错误 您已经激活了 rake 0 9 2 但您的 Gemfile 需要 rake 0 8 7 考虑使用捆绑执行 Using bundle exec rake而不仅仅是rake似乎可行 但这是解决此问题的最佳方法吗 Tr
  • 在 Swift / iOS 中从 UITableView 删除行并从 NSUserDefaults 更新数组的正确方法

    从中删除行的正确方法是什么UITableView并从 NSUserDefaults 更新数组 在下面的示例中 我正在读取一个数组NSUserDefaults并喂养一个UITableView及其内容 我还允许用户删除UITableView我不
  • GLM:不推荐使用以度为参数的函数(当使用弧度时)

    当前使用带有 SDL2 GLM 和 GLEW 的 VC 11 当我尝试做两件事时 问题源于 GLM 创建旋转矩阵 创建透视相机矩阵 3D 错误是 GLM 不推荐使用以度为参数的透视函数 尽管我将弧度 作为浮点数 传递给这两个函数 它说我应该
  • GetDirectories 无法枚举名称为 #255 的文件夹的子文件夹

    我的应用程序是 C 3 5 在 64 位 Windows 7 Ultimate 上运行 它会遍历所有文件夹子文件夹来执行其工作 然而 如果针对名称只有一个符号 255 的文件夹运行 它会失败 陷入无限循环 直到 StackOverflow
  • 如何使用 lodash 合并/连接对象数组中相同对象属性的值?

    我有一个对象数组的数组 如下所示 let fruitSamples id 1 type apples samples 1 2 3 id 2 type bananas samples 1 2 7 id 3 type pears samples
  • 理解 __init_subclass__

    我终于升级了我的 python 版本 并且发现了添加的新功能 除此之外 我对新的东西感到摸不着头脑 init subclass 方法 来自文档 每当包含类被子类化时 就会调用此方法 CLS 然后是新的子类 如果定义为普通实例方法 则此 方法
  • Jade - 打印所有可能的变量

    我希望能够显示当前加载的 jade 文件可以访问的所有可用变量 我意识到这有点奇怪 但你就知道了 如果它在控制台中或输出到页面 我并不真正担心 console info res locals this gives back way more
  • 使用 Lambda 进行模板类型推导

    我面临的问题很简单 给出以下代码 template
  • 在元标记中使用换行符

    我想在我的网站描述元标记中使用换行符 我该怎么做 因为如果我看到源代码它仍然会显示 br 仅有的 我在代码中使用类似的东西 为了在 AddThis 元内容标记中使用 n 将被忽略 所以这是行不通的
  • 用于文件关联的 dde ​​的最佳 .net 替代方案是什么?

    我有一个 MDI Windows 窗体应用程序 net 2008 它允许用户将各种文件类型与该应用程序关联 我目前使用类似这样的注册表项来执行此操作 这会导致应用程序通过命令行加载和访问文件名 Registry SetValue appKe
  • 如何在 Android Studio 中打开现有的 Eclipse 项目?

    切换到 Android Studio 并在 Eclipse 中处理我现有的所有项目 那么这样做的程序是什么 从 Eclipse 导出 1 更新您的 Eclipse ADT 插件 您必须拥有 22 0 或更高版本 2 在 Eclipse 中
  • 是否应该弃用 Task.Wait?

    我经历了惨痛的教训 从池线程调用 Task Wait 可能会导致线程饥饿死锁 根据这篇 MSDN 文章 在 死锁 一章中 我们应该遵守这两个规则 不要创建其同步方法等待异步函数的任何类 因为可以从池上的线程调用此类 如果类阻塞等待异步函数
  • Python 中 int 实例的 int 值存储在哪里?

    The intpython 中的 type 提供了两个名为numerator and real具有相同的内容 int 由于所有这 3 个值都返回相同的内部属性 我猜real是这样的属性 property def real self retu
  • 无法链接 CSS 和图像

    我正在开发 Spring Hibernate JSP 应用程序 我正在尝试显示 JSP 页面中的图像 图像未显示在浏览器上 我也无法将我的 CSS 链接到 JSP 页面 我的JSP页面是
  • 单独托管 API 和 IdentityServer4 主机(C#、.NET CORE)有哪些优势? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 也许我要问的问题非常明显和简单 但作为 IdentityServer4 的初学者以及或多或少的 oAuth2 OpenID 和 API 的初学者 我发现它很难理解 我们公司的目标是使用身份