使用运行在.NET Core上的Identity Server 4和运行在.NET 4.5.1上的WebApi应用程序是否可能相互配合?

4
考虑以下情况。您有一个实现asp.net webapi api的应用程序。
您正在设置一个新的Identity Server 4以与您的基础架构一起使用。您需要使您的api与Identity server配合工作。
如果是IdentityServer 3,您将使用IdentityServer3.AccessTokenValidation
如果您的api在.net core上,则会使用IdentityServer4.AccessTokenValidation
但是,鉴于您的api使用旧式的asp.net webapi,甚至不是owin,并且您的Identity Server是基于.net core的,您有让它们配合工作的选项吗?
1个回答

6

没问题。IdentityServer3 和 IdentityServer4 只是符合同一协议的不同实现方式。对于 TokenValidation 中间件也是如此。

你可以使用 IdentityServer4.AccessTokenValidation 来验证来自 IdentityServer3 WebApi 项目的令牌,构建一个 AspNetCore API。同样地,你可以使用 IdentityServer3.AccessTokenValidation 来验证来自 IdentityServer4 AspNetCore 项目的令牌,构建一个 Asp.Net 4.x WebApi。实际上,只要提供商按照规范实现了 OpenIDConnect,就可以在任何语言/框架中使用任何大多数 OpenIDConnect 提供商针对所构建的任何 API。


谢谢。您是在说这个程序 “理论上应该” 行得通,还是您已经尝试过并且它确实行得通了?一些更具实际意义的细节会有所帮助,例如使用哪个库,在哪里使用,如何确保在不兼容版本的Identity Server上可以验证参考标记(而不是自包含标记)等。规范没有涵盖许多实现细节,特别是访问/刷新标记的编码方式 - 这些都是特定于实现的。 - Andrew Savinykh
1
如果您的客户端应用程序使用ASP.NET Core,请使用IdentityServer4.AccessTokenValidation。如果您的客户端应用程序使用ASP.NET 4.x,请使用IdentityServer3.AccessTokenValidation。两者都以相同的方式与IdentityServer 3或4进行通信。没有任何不兼容性。有一个测试这个的存储库:https://github.com/IdentityServer/CrossVersionIntegrationTests - Scott Brady
@ScottBrady,非常有帮助,非常感谢!我会尝试的。 - Andrew Savinykh
@ScottBrady,针对asp.net core有一个IDS3集成包,但是旧的.net框架中没有IDS4集成包,您知道为什么吗? - Andrew Savinykh
我的猜测是,这个包是必需的,否则(使用正常的IdentityServer4.AccessTokenValidation)由于某些不兼容性而无法工作,而这个包会处理它,这个猜测是否正确? - Andrew Savinykh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接