问题标签 [dotnetify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
962 浏览

asp.net - 在 1 个进程中创建多个 Kestrel 实例是否安全?

我们正在微服务架构中构建一个编排器。我们选择 websockets 作为 RPC 协议,以建立一个流管道,该管道可以通过像 Kestrel 这样的支持 websocket 的服务器进行扩展。该编排器将主要在 Linux 服务器(dockerized)上运行。

出于管理和监控目的,我们计划使用http://dotnetify.net/构建一个反应式 Web 管理门户(可以半实时显示计算和客户端的数量,并带有推送通知)。

DotNetify 使用 SignalR,我们不能在 Websockets 之上使用 SignalR 层。在 TCP 协议之上,我们需要最小的开销。Websocket 本身是一个漂亮的标准,并且足够轻量级,但 SignalR 增加了对我们并不真正需要的东西(LAN、微服务)的支持。我们确实考虑过 WAMP,但在概念验证中,我们将在 websocket 总线中使用简单明了的自定义握手。另一个原因是:我们的主要后端是 IBM AIX,而 RDBMS 流程引擎是商业预构建二进制文件,因此在那里实现 SignalR 协议非常麻烦(几乎不可能)。但我们不必这样做,因为我们不想这样做。

在 1 个进程中拥有 [A]“纯”和 [B]“signalR”websocket 服务器的一种可能解决方案是启动多个 Kestrel。我试过这个(在windows和ubuntu上),它似乎运行没有问题。我只是使用了一个Task.Run()数组,然后是Task.WaitAll(backgroundTasks). 一个带 SignalR 的 Kestrel,一个不带 SignalR,在不同的端口上运行。 注意:我找不到在一个 Kestrel 中使用多个端口并从一个端口中排除 SignalR 的正确方法

我的问题是:虽然这似乎运行得很好,但有人可以确认这是安全的吗?特别是使用 libuv 和 os 信号处理?

0 投票
2 回答
1138 浏览

c# - 如何序列化运行时将“属性”添加到 Json

我实现了在运行时将“属性”添加到具有特殊 SystemComponent.PropertyDescriptor-s 的对象的可能性。

由于这些属性只能通过 ComponentModel.TypeDescriptor 而不是通过反射访问,因此这些属性在 WPF 环境中运行良好,但不适用于序列化。

这是因为我知道的所有 JSON 序列化程序都对类型使用反射。我分析了Newtonsoft.Json、System.Json、System.Web.Script.JavaScriptSerializer、System.Runtime.Serialization.Json。

我认为我不能使用这些序列化程序中的任何一个,因为它们都不允许修改实例上的属性的检索(例如,无法使用 ContractResolver)。

有什么方法可以使 JSON 序列化与这些序列化程序之一一起工作?也许通过特殊配置,覆盖序列化器或类似方法上的某些方法?是否有其他可用的序列化程序可以满足此要求?

背景:

运行时属性的想法基于此博客条目

序列化要求来自使用 dotNetify 序列化视图模型以将它们发送到客户端。

目前,我制作了一个 dotnetify 的分支,并通过使用 Newtonsoft.Json 和递归助手进行部分序列化来临时解决序列化问题。(如果对它感兴趣,可以查看差异:Fork)。

0 投票
0 回答
269 浏览

oauth - 如何使用 dotnetify 手动授权 IdentityServer4 隐式授权类型?

我正在尝试使用 vue.js 客户端实现 .net core WebAPi + SignalR 聊天服务器。

虽然我可以找到许多使用 SignalR 和 IdentityServer4 的参考资料,但我发现了这个名为 dotnetify 的有用库。doetnetify 作者描述了如何使用 ASOS http://dotnetify.net/core/api/security实现安全页面。但我坚持使用 JwtsecurityTokenHandler 进行验证。

我尝试用 IdentityServer4 替换使用 ASOS 实现的身份验证服务器部分,并复制了作者提供的所有自定义实现。但是当 Bearer 令牌传递给我的聊天 api 时,使用我手动更改的 tokenValidationParameters 验证令牌时会发生异常。

我的项目设置如下。IdentityServer4 具有以下 api 和客户端配置。

API配置:

客户端配置:

dotnetify 作者提供的示例实现:statup.cs https://github.com/dsuryd/dotNetify/blob/master/DevApp/server/Startup.cs AddAuthenticationServer.cs https://github.com/dsuryd/dotNetify/blob/ master/DevApp/server/AuthServer.cs

我删除了 services.AddAuthenticationServer() 并替换为 IdentityServer4 的 AddAuthentication("Bearer") ,如下所示。

在配置上,我复制了示例并修改了一个 tokenValidationParameters,如下所示。

例外情况如下。

我怀疑我的 tokenValidationParameter 设置不正确,但不知道如何正确设置并验证它。

试图理解 oid / oauth 流程,但在有限的时间内理解和解决我的问题似乎太复杂了。

谁能帮我看看在哪里解决这类问题?

提前致谢。

0 投票
1 回答
153 浏览

reactjs - 修改 dotnetify react js 以在 cordova 应用程序中使用(更改 dotnetify.react.connect 的路径)

我正在使用将 DotNetify 包裹在 Cordova 周围的 React 应用程序来构建 iOS 和 Android 应用程序。

Dotnetify 在给定的 URL 连接到 WebSocket 服务器,我们需要根据构建 web 或 Cordova 定义连接到 Socket/SignalR 服务器的主机 URL,当前行是:

Login 的定义实际上是相对的,我需要以某种方式预先挂起主机 URL 来告诉 build WebSocket 连接到哪里。

我的假设是它应该在 Package.json 中的某个地方定义,使其如下所示:

对于本地开发/调试模式或在具有公共静态 IP 的服务器或生产服务器上的开发,解决此问题的最佳解决方案是什么。

我发现base_url需要传入info对象:node_modules/socksjs-client/lib/main.js:183

所以基于上面我试图传递参数,但是 donetify 没有将这个参数传递给 socksjs。我们如何解决这个问题?