小编soa*_*gem的帖子

关于XML签名,我需要了解什么才能使SAML正常工作?

在工作中,我们有一个Web应用程序,我们需要使用SAML验证的单点登录与其他公司的Web应用程序进行交互.我们的网络应用程序是用PHP编写的,显然与其他公司使用的语言选择无关.尽管如此,我还需要编写一个简单的API,这个其他公司可以使用SAML请求发送SOAP请求,并生成SAML响应.我从头开始编写它有三个原因:1)用PHP编写的SAML交互似乎没有很多选项,即使我想要一个,2)它限制了添加另一个第三个所涉及的开销-party组件,以及3)从头开始创建东西通常会让我有更好的理解,并且如果需要的话,使我能够更好地适应未来的事情.

无论如何,我对SAML,SOAP和XML标准一般都是新手,所以我一直在教我自己.我已经为我们的目的提供了相当完整的API,但有一个例外,即另一家公司已经指定我们的响应将需要使用证书进行数字签名(我们收到的请求将同样进行数字签名).所以我一直在试图弄清楚如何处理/生成XML签名,但老实说,由于W3C规范并不完全轻松,所以有点令人困惑.

OASIS安全标记语言(SAML)V1.1文件的断言和协议的第5.4.8节(我已经关闭的文件,正如另一家公司所说他们将使用v1.1)包括一个例子包含已签名断言的签名响应,我将在此处引用以供参考:

<Response IssueInstant="2003-04-17T00:46:02Z" MajorVersion="1" MinorVersion="1"
 Recipient="www.opensaml.org" ResponseID="_c7055387-af61-4fce-8b98-e2927324b306"
 xmlns="urn:oasis:names:tc:SAML:1.0:protocol"
 xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <ds:SignedInfo>
   <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
   <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
   <ds:Reference URI="#_c7055387-af61-4fce-8b98-e2927324b306">
    <ds:Transforms>
     <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
     <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
      <InclusiveNamespaces PrefixList="#default saml samlp ds xsd xsi"
       xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
     </ds:Transform>
    </ds:Transforms>
    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <ds:DigestValue>TCDVSuG6grhyHbzhQFWFzGrxIPE=</ds:DigestValue>
   </ds:Reference>
  </ds:SignedInfo>
  <ds:SignatureValue>x/GyPbzmFEe85pGD3c1aXG4Vspb9V9jGCjwcRCKrtwPS6vdVNCcY5rHaFPYWkf+5EIYcPzx+pX1h43SmwviCqXRjRtMANWbHLhWAptaK1ywS7gFgsD01qjyen3CP+m3Dw6vKhaq1ed10BYyrIzb4KkHO4ahNyBVXbJwqv5pUaE4=</ds:SignatureValue>
  <ds:KeyInfo>
   <ds:X509Data>
    <ds:X509Certificate>MIICyjCCAjOgAwIBAgICAnUwDQYJKoZIhvcNAQEEBQAwgakxCzAJBgNVBAYTA1VT ... 8I3bsbmRAUg4UP9hH6ABVq4KQKMknxu1xQxLhpR1y1GPdiowMNTrEG8cCx3w/w==</ds:X509Certificate>
   </ds:X509Data>
  </ds:KeyInfo>
 </ds:Signature>
 <Status><StatusCode Value="samlp:Success"/></Status>
 <Assertion AssertionID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc"
  IssueInstant="2003-04-17T00:46:02Z" Issuer="www.opensaml.org"
  MajorVersion="1" MinorVersion="1" xmlns="urn:oasis:names:tc:SAML:1.0:assertion"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Conditions NotBefore="2003-04-17T00:46:02Z" NotOnOrAfter="2003-04-17T00:51:02Z">
   <AudienceRestrictionCondition>
    <Audience>http://www.opensaml.org</Audience>
   </AudienceRestrictionCondition>
  </Conditions>
  <AuthenticationStatement AuthenticationInstant="2003-04-17T00:46:00Z" …
Run Code Online (Sandbox Code Playgroud)

php xml saml digital-signature xml-signature

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

使用Moq调用方法时如何引发事件?

我有这样的界面:

public interface IMyInterface
{
    event EventHandler<bool> Triggered;
    void Trigger();
}
Run Code Online (Sandbox Code Playgroud)

我在我的单元测试中有一个模拟对象,如下所示:

private Mock<IMyInterface> _mockedObject = new Mock<IMyInterface>();
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

// pseudo-code
_mockedObject.Setup(i => i.Trigger()).Raise(i => i.Triggered += null, this, true);
Run Code Online (Sandbox Code Playgroud)

但是,在返回RaiseISetup接口上看起来不可用.我该怎么做呢?

c# unit-testing moq

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

如何使用ODBC连接到我的64位SQL Server?

我最近在我的Windows 7 Ultimate x64家用机器上安装了SQL Server 2008 Express.我还有IIS 7.5和PHP 5.3,我试图通过ADODB连接到SQL ,但不断收到此错误:

[Microsoft][ODBC Driver Manager] The specified DSN contains an
architecture mismatch between the Driver and Application
Run Code Online (Sandbox Code Playgroud)

在互联网上进行少量挖掘之后,我认为这是因为SQL Server ODBC驱动程序适用于32位操作系统,而我的64位操作系统.首先,我是否正确?这是我遇到麻烦的原因吗?其次,如果是这样,我该如何解决这个问题呢?是否有任何更新的ODBC驱动程序可以与64位操作系统一起使用?我看了但是找不到任何......

sql sql-server 64-bit odbc

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

时区的正确命名法是什么?

识别同一时区的方法有多种,不同的程序可以以不同的方式使用这些方法。我住在威斯康星州,所以我们通常将这里的时区称为“中部时间”。但我知道 Windows 有一个 的注册表项Central Standard Time,它实际上由中部标准时间 (CST) 和中部夏令时间 (CDT) 组成。但最近我看到这个时区显示为America/Chicago

引用这两个不同标准的正确术语是什么?比如说,你所说的America/Chicago识别时区的方式是什么?是不是类似于“标准 TZ 信息名称”或“ISO-1234567 时区名称”或“Eggert TZ 名称”?

那么稍微熟悉一点的呢Central Standard Time?您是否将该语法称为“友好时区名称”或“ISO-987654321 时区名称”或类似的名称?谢谢!

timezone datetime

11
推荐指数
1
解决办法
2083
查看次数

如何在不键入完整路径的情况下从命令行运行程序?

我可以用一个例子来解释我的问题.我最近下载了Python for Windows,安装到C:\ Python.所以,如果我在包含myscript.py的文件夹X中,并且我想调用它,我必须调用它:

> C:\Python\python.exe myscript.py
Run Code Online (Sandbox Code Playgroud)

但是,如果我可以在任何文件夹中执行此操作,那将是非常酷的:

> python myscript.py
Run Code Online (Sandbox Code Playgroud)

我该如何制作"全球"?

windows command-line

10
推荐指数
1
解决办法
7354
查看次数

如何让 CoreDNS 在我的 Raspberry Pi Kubernetes 集群上解析?

我已经按照许多在线教程在四个 Raspberry Pi 4 上设置了 Kubernetes 集群。我最终使用 Flannel 作为网络插件,因为它似乎是唯一一个真正适用于 RPi 的插件,根据2017 年的本指南,pod 网络 CIDR 为 10.244.0.0/16 。几乎一切正常……kube-system 命名空间中的所有基本 pod 都在运行/健康,我可以拉下图像并启动新容器。起初我无法获得任何 pod 日志,但是通过在每个节点上打开端口 10250 很快就解决了这个问题。

但是DNS解析好像还是有问题。我应该澄清一下,主机上的 DNS 解析显然有效,因为集群能够下载我指定的任何容器映像。但是一旦容器运行,它就无法“拨出”任何东西。作为测试,我arm32v7/buildpack-deps:latest在 pod 中运行容器。它可以很好地从 Docker 集线器中提取图像。但是当我进入它并简单地输入curl https://www.google.com它时,它会在最终超时之前挂起。我启动的任何需要与外部 Internet 交互的 Pod 也是如此:它们挂起、挂起、挂起。

以下是我已经在每个节点上运行的所有与网络相关的命令:

sudo iptables -P FORWARD ACCEPT
sudo iptables -A FORWARD -i cni0 -j ACCEPT
sudo iptables -A FORWARD -o cni0 -j ACCEPT
sudo ufw allow ssh
sudo ufw allow 443  # can't remember why i ran this one …
Run Code Online (Sandbox Code Playgroud)

kubernetes ufw coredns

9
推荐指数
1
解决办法
1018
查看次数

最佳做法是跨多个线程使用静态数据库连接吗?

是否有任何共识是关于多线程应用程序的最佳实践:(1)使用单个,共享,静态连接到SQL数据库,或(2)每个BackgroundWorker打开它自己的唯一连接到数据库?

我显然假设每个线程都需要连接到同一个数据库.

使用类型是否会影响答案?例如,如果每个线程只运行SELECT语句怎么办?或者,如果某些线程也可以执行UPDATE语句?或者用法并没有真正有所作为,你应该总是/永远不分享静态连接?

c# database multithreading backgroundworker sql-server-2012

8
推荐指数
2
解决办法
2424
查看次数

如何在未插入设备时确定设备驱动程序的版本?

感谢一些其他有用的StackOverflow问题,我找到了一种查询WMI设备驱动程序的方法.但是,在我看来,数据存储在不能很好地连接在一起的不同位置.

我有一个使用FTDI驱动程序的USB转串口电缆.我可以查询Win32_SystemDrivers以确定是否已安装驱动程序,如下所示:

SelectQuery query = new SelectQuery("Win32_SystemDriver");
query.Condition = "Name = 'FTDIBUS'";

ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection drivers = searcher.Get();
bool installed = (drivers.Count > 0);
Run Code Online (Sandbox Code Playgroud)

但是这个集合并没有告诉我关于版本信息的事情.所以我发现我可以查询Win32_PnPSignedDriver找到设备驱动程序的版本.所以我做的是这样的:

SelectQuery query = new SelectQuery("Win32_PnPSignedDriver");
query.Condition = "DriverProviderName = 'FTDI'";

ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection drivers = searcher.Get();

foreach (ManagementBaseObject driverObject in drivers)
{
    ManagementObject driver = (ManagementObject)driverObject;
    string version = driver["DriverVersion"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

但是,第二个代码块只有在实际插入电缆(设备)时才会成功.我想做的是检查已安装设备驱动程序的版本,无论设备当前是否已插入.

我该怎么做呢?

c# wmi wmi-query

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

如何使用 kubectl create 手动设置 Kubernetes 对象的值?

特别是,我想设置环境变量。我有一个CronJob按计划运行的定义,但我经常想在指定略有不同的环境变量时手动调用它。

我可以使用以下命令手动调用 cron 作业:

kubectl create job --from=cronjob/my-cron-job my-manual-run
Run Code Online (Sandbox Code Playgroud)

但这会复制资源定义中指定的所有相同环境变量。如何使用此create job命令添加其他新的环境变量?

kubernetes kubectl

8
推荐指数
2
解决办法
2859
查看次数

如何调试py2exe'应用程序无法正确初始化'错误?

我对Python一般都很陌生,但我在Python 2.6/wxPython 2.8中创建了一个应用程序,当我通过Python运行时它非常有效.但我想更进一步,并能够将其部署为Windows可执行文件,所以我一直在尝试py2exe.但是我无法让它发挥作用.它总是会编译一个exe,但是当我真的尝试运行它时会发出一些神秘的错误消息.起初他们是简单的消息,说它找不到某些DLL,但即使给它所需的所有DLL,它现在返回:

The application failed to initialize properly (0xc0000142).
Click OK to terminate the application.
Run Code Online (Sandbox Code Playgroud)

所以我打破了局面,只是用wxPython制作了一个非常非常简单的应用程序,看看它是否有用,或者我的原始应用程序的一些更复杂的功能是否会妨碍.但即便是我的简单测试也返回了相同的错误.这是简单测试脚本的代码:

import wx

class MainWindow(wx.Frame):

    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, wx.ID_ANY, title, style=wx.DEFAULT_FRAME_STYLE ^ wx.MAXIMIZE_BOX)
        panel = wx.Panel(self, -1, style = wx.TAB_TRAVERSAL | wx.CLIP_CHILDREN | wx.FULL_REPAINT_ON_RESIZE)
        main_sizer = wx.BoxSizer(wx.VERTICAL)

        testtxt = wx.StaticText(panel, -1, label='This is a test!')
        main_sizer.Add(testtxt, 0, wx.ALIGN_CENTER)

        panel.SetSizerAndFit(main_sizer)
        self.Show(1)
        return

app = wx.PySimpleApp()
frame = MainWindow(None, -1, 'Test App')
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

这是我使用的py2exe安装脚本:

#!/usr/bin/python

from distutils.core import setup
import py2exe

manifest …
Run Code Online (Sandbox Code Playgroud)

python wxpython py2exe

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