.net FrameWork WebAPI 如何添加保护接口,授权服务器是.net Core 的IdentityServer4 ,并且对signalr进行保护

来源:互联网 发布:淘宝上2手奢侈品包包 编辑:程序博客网 时间:2024/05/16 19:19
目前.net FrameWork WebAPI  仅支持到IdentityServer3,但是授权服务器是.net Core 的IdentityServer4 ,这时候对webapi 进行保护可能会出现一些问题,

首先我们在webApi中引用IdentityServer3,我这里把我所有的引用都帖进来

using Microsoft.Owin;using Owin;using Microsoft.Owin.Cors;using IdentityServer3.AccessTokenValidation;using System.Web.Http;

app.UseCors(CorsOptions.AllowAll);//跨域访问            app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions            {                Authority = "http://192.168.1.223",                RequiredScopes = new[] { "openid" }            });            //configure web api            var config = new HttpConfiguration();            config.MapHttpAttributeRoutes();                        config.Routes.MapHttpRoute(                name: "DefaultApi",                routeTemplate: "api/{controller}/{id}",                defaults: new { id = RouteParameter.Optional }            );            config.Filters.Add(new AuthorizeAttribute());            app.UseWebApi(config);
在global.asax中注释掉原有的配置

 

 AreaRegistration.RegisterAllAreas();            //GlobalConfiguration.Configure(WebApiConfig.Register);            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);            RouteConfig.RegisterRoutes(RouteTable.Routes);            BundleConfig.RegisterBundles(BundleTable.Bundles);            Database.SetInitializer<DataModel>(null);



接下来就是对signalr 进行保护

添加[Authorize]

[HubName("messageHub")]    [Authorize]    public class MessageHub : Hub



然后客户端在连接Signalr的时候写如下代码

 var con = $.hubConnection("http://localhost:50839", { qs: { "userId": userId } });            $.signalR.ajaxDefaults.headers = { Authorization: "Bearer " + "token" };            var hub = con.createHubProxy("messageHub");            hub.on('getMessage', function (messagePush) {                console.log(messagePush);                console.log(messagePush.Body);                $('#vote').val(JSON.stringify(messagePush));            });            con.start().done(function () {                $('#vote').click(function () {                    hub.invoke("SendBroadMessage", Math.random())                });            });



阅读全文
0 0