小编tur*_*ula的帖子

如何进行无状态(无会话)和无cookie身份验证?

Bob使用Web应用程序来实现某些目标.和:

  • 他的浏览器正在节食,因此它不支持cookie.
  • Web应用程序是一个受欢迎的应用程序,它在特定时刻处理许多用户 - 它必须很好地扩展.只要保持会话会对同时连接的数量施加限制,并且当然会带来不可忽视的性能损失,我们可能希望有一个无会话系统:)

一些重要的说明:

  • 我们有运输安全(HTTPS及其最好的朋友);
  • 在幕后,Web应用程序代表当前用户将大量操作委托给外部服务(这些系统确实将Bob视为其用户之一) - 这意味着我们必须转发Bob的凭据.

现在,我们如何验证Bob(在每个请求上)?哪个是合理的方式来实现这样的事情?

  • 通过HTML表单隐藏字段网球凭证... 包含凭据(用户名和密码),两个球拍分别是浏览器和Web应用程序.换句话说,我们可以通过表单字段而不是通过cookie来回传输数据.在每个Web请求中,浏览器都会发布凭据.虽然,在单页应用程序的情况下,这可能看起来像在橡胶墙上打壁球而不是打网球,因为包含凭证的Web表单可能在网页的整个生命周期(和服务器)中保持活动状态将被配置为不提供凭证).
  • 将用户名和密码存储在页面上下文中 - JavaScript变量等.这里需要单页,恕我直言.
  • 加密的基于令牌的身份验证 在这种情况下,登录操作将导致生成加密的安全令牌(用户名+密码+其他内容).该令牌将被返回给客户端,即将到来的请求将伴随令牌.这有意义吗?我们已经有了HTTPS ...
  • 其他...
  • 不得已:不要这样做,在会话中存储凭据!会议很好.有或没有饼干.

对于任何先前描述的想法,是否存在任何网络/安全问题?例如,

  • 超时 - 我们可以保留时间戳和凭证(时间戳= Bob输入凭证的时间).例如,当NOW - timestamp> threshold时,我们可能会拒绝该请求.
  • 跨站点脚本保护 - 不应该有任何不同,对吧?

非常感谢您花时间阅读本文:)

security authentication stateless cookieless session-cookies

105
推荐指数
1
解决办法
4万
查看次数

如何以编程方式检查Windows更新的适用性规则?

通过浏览Windows更新.msu文件的内容(例如,使用诸如7zip之类的工具),可以找到一系列定义先决条件和适用性规则的文件.例如:

<UpdateIdentity UpdateID="E6CF1350-C01B-414D-A61F-263D14D133B4" RevisionNumber="1" /><Properties UpdateType="Category" /><ApplicabilityRules><IsInstalled><True /></IsInstalled></ApplicabilityRules>
....
<UpdateIdentity UpdateID="2bf7ed9c-6f43-493a-b156-db20f08c44c4" RevisionNumber="101" /><Properties UpdateType="Detectoid" /><Relationships /><ApplicabilityRules><IsInstalled><b.RegSz Key="HKEY_LOCAL_MACHINE" Subkey="SYSTEM\CurrentControlSet\Control\Nls\Language" Value="InstallLanguage" Comparison="EqualTo" Data="0409" /></IsInstalled></ApplicabilityRules>
....
<UpdateIdentity UpdateID="6AECE9A4-19E3-4BC7-A20C-070A5E31AFF4" RevisionNumber="100" /><Properties UpdateType="Detectoid" /><Relationships>
...
<UpdateIdentity UpdateID="3B4B8621-726E-43A6-B43B-37D07EC7019F" /><ApplicabilityRules><IsInstalled><b.WmiQuery Namespace="root\cimv2" WqlQuery="SELECT Manufacturer FROM Win32_ComputerSystem WHERE Manufacturer = 'Samsung Electronics' or Manufacturer = 'Hewlett-Packard' or Manufacturer = 'Gateway'" /></IsInstalled></ApplicabilityRules>
...
Run Code Online (Sandbox Code Playgroud)

现在,给定一个.msu文件和我的本地计算机,有没有办法迭代这些规则并找出是否不满意 - 哪一个?

我可以将WSUS 3.0类库用于此目的吗?还是有工具/脚本?

我真正想要的是准确地知道什么条件使计算机拒绝某个Windows更新(KB2973201),并显示消息更新不适用于您的计算机(此后的错误代码为WU_E_NOT_APPLICABLE).

关于更新的这些适用性规则的文档似乎太少了.有什么好的消息来源吗?

参考文献:

c# windows powershell windows-update

23
推荐指数
2
解决办法
1591
查看次数

EWS托管Api中的电子邮件对话/电子邮件线程支持(针对Exchange 2010左右)

EWS托管API具有的功能,用于检索和管理屈指可数的电子邮件对话(又名 电子邮件线程).不幸的是,其中很大一部分只适用于版本的Exchange(2013等)

Outlook确实实现了针对旧版 Exchange的电子邮件线程.也许它通过自己管理线程来实现这一点(Outlook是桌面应用程序,电子邮件在本地计算机上复制,因此可以通过Conversation Topic等轻松分组).

现在,如何在Web应用程序中支持电子邮件线程?通常在Exchange客户端中支持此功能的操作是什么?通过支持我的意思是:

  • 检索前10个会话快照,然后检索接下来的10个会话快照 - 即支持分页(按需检索页面) - 此数据将用于构建主视图
  • 检索对话中的所有电子邮件 - 也就是说,按需检索对话的孩子 - 这些数据将用于构建对话的详细视图.

EWS Managed Api等问题:

  • EWS Managed API中没有Conversation.Bind(conversationId)
  • ExchangeService.FindItems(ConversationTopic的过滤器=="某个主题")绝不可靠(因为可能有不同的会话具有相同的主题)
  • ExchangeService.FindItems(过滤器为ConversationId =="QWERYUIO") - 我无法弄清楚如何使用这个:)是否有可能通过ConversationId搜索电子邮件?
  • ExchangeService.GetConversationItems()等函数仅适用于以Exchange Online为目标的客户端以及以Exchange Server 2013开头的Exchange版本.

我现在使用的(作为解决方法):

  1. 使用ExchangeService.FindConversation()检索(按需)一页对话
  2. 对于检索到的页面中的每个对话,请阅读Conversation.GlobalIds属性
  3. 构建一个包含所有GlobalIds值的聚合(数组)- 通过连接所有对话的Conversation.GlobalIds
  4. 进行Exchange调用以将ID绑定到电子邮件(ExchangeService.BindToItems)
  5. 执行由组的邮件(在概念上,它是一个分组操作,但是执行不是一个简单的组通过调用操作-邮件无法通过分组 …

asp.net exchange-server exchangewebservices ews-managed-api

8
推荐指数
1
解决办法
2903
查看次数

用于创建和更新资源的超媒体友好型REST模式

我正在尝试设计一个充分利用超媒体的RESTful服务.
优选地,用户代理应该只知道根URI,以便能够探索服务的所有功能 - 也就是说,我希望它在成熟度模型中处于第3级.

现在,用户代理应该能够创建一些资源,并在以后编辑它们.在创建/编辑时,用户代理需要访问其他一些资源/枚举.

foo资源:

{
    "category" : "category chosen from an enumeration of possible categories",
    "color" : "color chosen from an enumeration of possible colors",
    "aRelatedResource" : "resource identifier from chosen from a collection"
}
Run Code Online (Sandbox Code Playgroud)

鉴于前面提到的要求,我提出了以下模式:

有一个fooRoot资源:

{
    // no properties, only links
    "_links" : { 
        "foos" : { "href" : "URI-to-foos" },
        "fooCreator" : { "href" : "URI-to-plain-fooWriter" }
    }
}
Run Code Online (Sandbox Code Playgroud)

包括链接fooWriterFOO资源:

foo资源:

{
    "category" …
Run Code Online (Sandbox Code Playgroud)

rest design-patterns restful-architecture hypermedia web

8
推荐指数
1
解决办法
566
查看次数

WCF:身份验证服务或基于令牌的安全性?

服务器上有一个Dynamic CRM实例("内部部署").它将由在远程计算机上运行的一些站点(另一个域,另一个Active Directory)使用.这些站点与CRM实例之间的通信是通过CRM代理,位于其附近的WCF服务(靠近CRM),处理请求,查询CRM等完成的.

该WCF服务面向Internet.虽然安全的通信渠道不是必需的,但认证是.我们不能让随机客户端使用CRM代理提供的服务.

那么,身份验证服务(cookies?)/手动编码令牌传递(作为每个服务操作的参数)/ 此解决方案 - 在stackoverflow上.

先感谢您!

PS:手动编码的令牌将是"时间敏感的",并使用一些密钥进行几次哈希处理.中间人可能不是一个大问题,因为在请求之后令牌可能无效.

c# rest wcf dynamics-crm-2011

7
推荐指数
1
解决办法
2万
查看次数

如何在Firefox Web Extension中正确覆盖Content-Type标头?

假设来自服务器的HTML文件包含以下标题:

Content-Type: application/octet-stream
Content-Disposition: attachment;
Run Code Online (Sandbox Code Playgroud)

我想改变Web扩展中的标题(以便HTML文件显示为常规网页):

Content-Type: text/html; charset=utf-8
(Removed Content-Disposition)
Run Code Online (Sandbox Code Playgroud)

在Google Chrome中,网络扩展程序成功更改标题,HTML文件显示为普通网页.在Firefox(48)中,虽然标题已更改,但系统会提示我下载HTML文件.我做错了什么或这是一个已知的错误?

请求示例:localhost:8000/test.html

代码如下.


Web扩展 - manifest.json:

{
    "description": "Change content type",
    "manifest_version": 2,
    "name": "change-content-type",
    "version": "1.0",

    "permissions": [
        "webRequest", "webRequestBlocking", "http://localhost/*"
    ],

    "background": {
        "scripts": ["background.js"]
    }
}
Run Code Online (Sandbox Code Playgroud)

Web扩展 - Background.js如下所示:

function setHeader(headers, name, value) {
    for (var header of headers) {
        if (header.name.toLowerCase() == name.toLowerCase()) {
            header.value = value;
            return;
        }
    }

    headers.push({ name : name, value : value });
}

function removeHeader(headers, …
Run Code Online (Sandbox Code Playgroud)

firefox http http-headers google-chrome-extension firefox-addon-webextensions

5
推荐指数
1
解决办法
1151
查看次数

使用 Rosyln CSharpScript.Create() 而不将 DLL 加载到 AppDomain

目前我执行一个 C# 脚本如下:

using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;

// ...

void RunScript(string myFile)
{
    string code = File.ReadAllText(myFile);
    var script = CSharpScript.Create(code, globalsType: typeof(MyContext));
    var scriptFunction = script.CreateDelegate();
    scriptFunction(myContextInstance).Wait();
}
Run Code Online (Sandbox Code Playgroud)

但是,每次编译和运行脚本时,都会将一个新的 DLL 加载到 AppDomain 中。

AppDomain.CurrentDomain.GetAssemblies()
Run Code Online (Sandbox Code Playgroud)

例子:

R*c906e0cf-ab67-4bed-819a-44600a796455#1-0, Version=0.0.0.0
R*c906e0cf-ab67-4bed-819a-44600a796455#2-0, Version=0.0.0.0
R*c906e0cf-ab67-4bed-819a-44600a796455#3-0, Version=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

这意味着在运行大量脚本时,可能会遇到内存问题。这是真的?有没有办法阻止 Roslyn 发出 DLL?

我知道您不能从 AppDomain 卸载程序集。

编辑:支持可收藏的程序集

.net c# roslyn

5
推荐指数
0
解决办法
1100
查看次数

如何访问Lync Online(Office 365)的UCWA端点?

UCWA文档指出,UCWA目前仅适用于具有Lync内部部署的客户.

尽管如此,如果对Office 365帐户使用Lync Connectivity Analyzer,似乎可以连接到UCWA服务:已完成的移动性测试(UCWA)服务.此外,如果我检查此工具执行的Web请求(例如,使用Fiddler),我可以从Office 365获取它(以某种方式)获取的身份验证令牌,并使用它来发出对UCWA的请求.

  • 似乎UCWA是由Office 365公开的,这是正确的吗?似乎Lync Connectivity Analyzer使用某个WebTicket服务来获取身份验证令牌.
  • 是否有任何库抽象使用WebTicket服务以获取身份验证令牌?拥有令牌后,访问UCWA资源将非常简单 - 但是,一个库也会很好:)
  • 我找不到太多关于WebTicket服务(WCF)的文档.如果我添加一个服务引用(Visual Studio中)到https://lyncweb.domain.com/WebTicket/WebTicketService.svc,没有太多的选择-它似乎是请求和响应消息不具有一定的结构,因此,调用此WebTicket服务公开的IssueToken操作非常棘手.

链接:

c# wcf office365 lync-2013 ucwa

4
推荐指数
1
解决办法
2737
查看次数

canvas.toDataURL()不会改变图像质量。怎么会?

根据文档

所述HTMLCanvasElement.toDataURL()方法返回包含在由所述类型参数(默认为PNG)指定的格式的所述图像的表示的数据URI。返回的图像的分辨率为96 dpi

不涉及打印时如何参考打印分辨率

我写了一个jsfiddle,它在画布上绘制图像,然后调用toDataURL()。毕竟,似乎最终图像的质量没有受到影响。

我不明白96 dpi在文档中是什么意思。有什么想法吗?

var image = new Image();
image.crossOrigin = "Anonymous";
image.src = "...";
// ...
var dataURL = canvas.toDataURL('image/jpeg', 1.0);
window.open(dataURL);
Run Code Online (Sandbox Code Playgroud)

javascript printing html5 canvas html5-canvas

3
推荐指数
1
解决办法
664
查看次数

您如何改善Dynamics CRM 2011中的用户体验?

我知道这很难,但你如何改善用户体验,动态CRM 2011

  • 你如何设计你的表格?你的表格是否"充满了iframe"?你隐藏所有字段然后插入一个托管和公开所有功能的iframe?

  • 您是否尝试模仿 iframe中的Dynamics CRM 的默认样式(以便它与用户界面更好地集成)?

  • Xrm.Page.data.entity.attributes允许安装的onChange()处理程序.就我所知,这就是全部.如何通过几乎没有来自用户的反馈来提供良好的用户体验

我希望这些都是常识问题:)提前谢谢!

PS:我是Dynamics CRM开发的新手,并且......你如何制作一个自动完成的文本字段

user-interface dynamics-crm dynamics-crm-2011 web

0
推荐指数
1
解决办法
310
查看次数

如何在Dynamics CRM 2011中创建"客户"类型的字段?

有一个自定义实体ê.我想在E上添加一个查找字段,这是对联系人帐户类型(即客户/方)的记录的引用.

例如,Case实体上有这样一个字段," customerid "(Customer类型).

替代方案(我将在'普通'SQL数据库上做)将添加两个字段:ref_contact,ref_account.

先感谢您!

database-design dynamics-crm dynamics-crm-2011

0
推荐指数
1
解决办法
2316
查看次数