c# - DotNetOpenAuth2 中的单个 AuthZ/AuthN 端点

标签 c# authentication access-token dotnetopenauth

我正在致力于实现一个身份验证服务器,该服务器将为我们公司生产的 Web 应用程序提供单点登录,目前正在使用 DotNetOpenAuth2。我的问题是,DNOA 的工作原理如下(来自 Badrinarayanan Lakshmiraghavan 的 Apress 书籍 Pro ASP.NET Web API Security)

DotNetOpenAuth Protocol

但我希望它像这样工作(我编辑的这张图片):

enter image description here

有没有办法让它做到这一点,或者我应该使用另一个框架?我这样做是为了让安全性更简单,让后来的开发人员更容易理解。以下是为什么这非常适合我的目的的解释。

我们的所有 Web 应用程序都支持 HTTPS,并且位于 2 个父域之一下(因此每个 Web 服务器都有 2 个 x509 证书,支持 *.domain1.com 或 *.domain2.com 等子域上的 SSL)。

我的计划是使用现有证书作为隐式共享 key 来加密 DotNetOpenAuth2 生成的 token 。因此,在创建 token 时,AuthorizationServerAccessToken.ResourceServerEncryptionKey 将是 SSL 证书的公钥,AuthorizationServerAccessToken.AccessTokenSigningKey 将是 SSL 证书的私钥。

这样我的任何服务器都能够解密用户 token 并以安全的方式从中提取授权声明。鉴于该方案的简单性,我只想要一个接收用户名和密码并返回加密 token 的身份验证端点。

这种简化似乎使事情变得更加安全并且更容易实现。特别是因为我们可以取消随机数。一个可能的弱点是,获得 Web 证书私钥访问权限的攻击者也能够欺骗用户身份验证 token 。但假设您的 SSL 证书没有受到损害似乎是可行的安全做法,因为 Web 应用程序的安全性通常完全依赖于该假设。无论如何,我不会在 token 中存储敏感信息,只是存储权限标志。

最佳答案

您的图表的主要目的似乎是删除授权代码交换步骤并仅提供访问 token 。这是相关的post我建议您阅读以让自己相信此步骤的有用性。另外,您真的想仅仅因为 OAuth2.0 令人困惑而创建自己的类似 OAuth2.0 的授权协议(protocol)吗?我认为随着越来越多的开发人员采用 OAuth2.0,这些概念将开始变得不那么陌生。

关于c# - DotNetOpenAuth2 中的单个 AuthZ/AuthN 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43770009/

相关文章:

.net - ServiceStack 中提供基于 token 的身份验证的推荐实现模式是什么?

具有克隆访问权限的 github 个人访问 token

c# - IdentityServer4 刷新 token 为空

c# - XmlReader 不考虑文档类型符号

c# - 在 C# 中使用字符串调用哈希表

amazon-web-services - Amazon S3 下载身份验证

c# - C# 3.0 中 Windows 本地用户帐户的身份验证

c# - 在 C# Mono Debian 中读取文件不起作用

c# - 更改默认的 ASP MVC 请求 header 以添加您自己的值

ruby-on-rails - 在设计中使用 rails secret 来加盐认证 key