加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用OWIN和WsFederation为MVC,web api和signalR

发布时间:2020-12-16 04:31:38 所属栏目:asp.Net 来源:网络整理
导读:对于我的公司,我必须制作一个POC来检查我们是否可以对我们的项目使用wsFederation身份验证,该项目有一个MVC应用程序,一些webapi控制器和一些signalR集线器,所有这些都在不同的项目中. 我们还希望在客户端应用程序和身份提供商应用程序中使用OWIN身份验证中间
对于我的公司,我必须制作一个POC来检查我们是否可以对我们的项目使用wsFederation身份验证,该项目有一个MVC应用程序,一些webapi控制器和一些signalR集线器,所有这些都在不同的项目中.
我们还希望在客户端应用程序和身份提供商应用程序中使用OWIN身份验证中间件.

我使用Thinktecture Identity Server v2作为身份提供者(但我们必须在某些时候开发自己).
对于MVC应用程序,它非常简单,并且使用SAML2令牌工作正常.

但是现在事情变得有点复杂,因为我希望Web应用程序上的经过身份验证的用户能够使用ajax调用从web api应用程序(与MVC不同,请记住)调用控制器方法.

我已经阅读了许多关于委托和代理令牌的事情,但我有点迷失,不知道在哪里或如何开始这部分.此外,我找不到任何关于使用OWIN身份验证的委派.

所以我的第一个问题是:是否有可能实现这一目标?
然后:有人能指出我正确的方向吗?

解决方法

我正在研究维托里奥·贝尔托奇的指示.

http://www.cloudidentity.com/blog/2013/01/09/using-the-jwt-handler-for-implementing-poor-man-s-delegation-actas/

关于它的几个注释,它说的是JWTSecurityTokenHandler,它现在是JwtSecurityTokenHandler.这是一个小错字,但如果你不知道它,它是一个很好的方法,松散15分钟.

我也无法使用X509 FindByThumbprint部分.我认为我没有正确注册本地证书.一旦我明天上班,我会发布我必须改变的内容,以便让它发挥作用.

Dominick Baier(http://leastprivilege.com/)也开设了一个名为WebApi v2 Security的复数课程,该课程讲述了如何注入安全管道并设置web api项目来处理这个问题.

作为另一种选择,您可以将Vittorio使用的TokenValidationHandler类替换为Microsoft.Owin.Security.Jwt包,并在Startup.cs文件中实现以下代码.

app.UseJwtBearerAuthentication(
            new JwtBearerAuthenticationOptions
            {
                AuthenticationMode = AuthenticationMode.Active,AllowedAudiences = new[] { ConfigurationSettings.AppSettings["ida:Realm"] },IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
                    { 
                        new SymmetricKeyIssuerSecurityTokenProvider(
                            ConfigurationSettings.AppSettings["ida:ValidIssuer"],ConfigurationSettings.AppSettings["ida:SymmetricKey"])
                    },Provider = new OAuthBearerAuthenticationProvider
                {
                    OnValidateIdentity = context =>
                    {
                        var identity = context.Ticket.Identity;
                        return System.Threading.Tasks.Task.FromResult<object>(null);
                    }
                }
            });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读