小编iUs*_*ser的帖子

寻找有关第一个SAML实施的反馈

我的任务是设计一个非常简单的SSO(单点登录)流程.我的雇主已指定应在SAML中实施.我想在确认SAML规范时创建尽可能简单的消息.

我会非常感激,如果你们当中有些人会看我的请求和响应消息,并告诉我,如果他们有意义我的目的,如果他们有任何需要在那里,如果他们缺少什么,需要在那里.

另外,我想知道在回复的哪个部分我应该提供有关该主题的其他信息; 特别是主题的电子邮件地址.

交互需要如下工作:

  1. 用户此时向服务提供商请求服务,服务提供商对用户一无所知.
  2. 服务提供商请求身份提供商对用户进行身份验
  3. 用户由身份提供商进行身份验证/注册
  4. 身份提供商使用身份验证成功消息PLUS用户的电子邮件地址来响应服务提供商.

以下是我认为请求应该是:

<?xml version="1.0" encoding="UTF-8"?>
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
ID="abc" 
IssueInstant="1970-01-01T00:00:00.000Z" 
Version="2.0"
AssertionConsumerServiceURL="http://www.IdentityProvider.com/loginPage">
   <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
    http://www.serviceprovider.com
    </saml:Issuer>
    <saml:Subject>
        <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">3f7b3dcf-1674-4ecd-92c8-1544f346baf8</saml:NameID>
    </saml:Subject>
Run Code Online (Sandbox Code Playgroud)

以下是我认为响应应该是:

<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="http://www.serviceprovider.com/desitnationURL" ID="123" IssueInstant="2008-11-21T17:13:42.872Z" Version="2.0">
    <samlp:Status>
        <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0">
        <saml:Subject>
            <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">3f7b3dcf-1674-4ecd-92c8-1544f346baf8</saml:NameID>
            <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:profiles:SSO:browser">
                <saml:SubjectConfirmationData InResponseTo="abc"/>
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:AuthnStatement AuthnInstant="2008-11-21T17:13:42.899Z">
            <saml:AuthnContext>
                <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
            </saml:AuthnContext>
        </saml:AuthnStatement>
    </saml:Assertion>
</samlp:Response>
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:

  1. 这是一个有效的SAML交互吗?

  2. 可以简化请求或响应XML吗?

  3. 我应该在回复的哪个位置放置主题的电子邮件地址?

我非常感谢你的帮助.非常感谢!

-摩根

saml

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

Apache flume twitter代理不流数据

我正在尝试将Twitter提要流式传输到hdfs,然后使用配置单元.但第一部分,流数据和加载到hdfs不起作用,并给出Null指针异常.

这就是我尝试过的.

1.下载了apache-flume-1.4.0-bin.tar.提取它.将所有内容复制到/ usr/lib/flume /.在/ usr/lib/i中将所有者更改为flume目录的用户.当我做LS命令在/ usr/lib中/水槽/,它表明

bin  CHANGELOG  conf  DEVNOTES  docs  lib  LICENSE  logs  NOTICE  README  RELEASE-NOTES  tools
Run Code Online (Sandbox Code Playgroud)

2.移至conf /目录.我将文件复制flume-env.sh.templateflume-env.sh并将JAVA_HOME编辑为我的java路径/usr/lib/jvm/java-7-oracle.

3.接下来,我在同一目录中创建了一个名为flume.conf的文件,conf并添加了以下内容

TwitterAgent.sources = Twitter
TwitterAgent.channels = MemChannel
TwitterAgent.sinks = HDFS

TwitterAgent.sources.Twitter.type = com.cloudera.flume.source.TwitterSource
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sources.Twitter.consumerKey = <Twitter Application API key>
TwitterAgent.sources.Twitter.consumerSecret = <Twitter Application API secret>
TwitterAgent.sources.Twitter.accessToken = <Twitter Application Access token>
TwitterAgent.sources.Twitter.accessTokenSecret = …
Run Code Online (Sandbox Code Playgroud)

java twitter hadoop flume cloudera

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

创建SAML断言并签署响应

我有一个Java Web应用程序.我想为我的应用程序实现SAML单点登录登录.我有这个GitHub onelogin程序来发送请求并获得响应.但它没有正常工作.我在那里创建了一个帐户.但我没有企业帐户.当我运行应用程序时,它将进入onelogin登录页面.我尝试登录,但它没有在响应中返回任何内容,表明我没有权限.如果我也提供了错误的凭据,则它不会给出任何SAML响应.

所以我决定创建一个断言并签名.

  1. 我是否需要先向任何身份提供商发送SAML请求?
  2. 如何创建示例SAML断言而不是去IdP(这样很好吗?)
  3. 收到SAML回复后,如何在我的应用程序中签名并继续?

谢谢

更新1

<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
  ID="123" InResponseTo="abc" IssueInstant="2014-11-21T17:13:42.872Z" 
  Version="2.0">
    <samlp:Status>
        <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Version="2.0">
        <saml:Subject>
            <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
                user@example.com
            </saml:NameID>
        </saml:Subject>
        <saml:AuthnStatement AuthnInstant="2014-11-21T17:13:42.899Z">
            <saml:AuthnContext>
                <saml:AuthnContextClassRef>
                    urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
                </saml:AuthnContextClassRef>
            </saml:AuthnContext>
        </saml:AuthnStatement>
    </saml:Assertion>
</samlp:Response>
Run Code Online (Sandbox Code Playgroud)

java single-sign-on opensaml saml-2.0

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

根据SAML请求创建SAML响应

我开发了一个Java Web应用程序,我想实现SAML.这些是我认为实施SAML的正确步骤.

  1. 服务提供商(SP,在本例中为我的应用程序)向IdP发送SAML身份验证请求.
  2. 然后,IdP对其进行验证并创建SAML响应断言并使用证书对其进行签名,然后发送回SP.
  3. 然后,SP使用密钥库中的证书公钥对其进行验证,并在此基础上进一步进行.

我有一个示例代码,我能够创建SAML请求,就像这样

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
    ID="_c7b796f4-bc16-4fcc-8c1d-36befffc39c2" Version="2.0"
    IssueInstant="2014-10-30T11:21:08Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
    AssertionConsumerServiceURL="http://localhost:8080/mywebapp/consume.jsp">
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://localhost:8080/mywebapp
    </saml:Issuer>
    <samlp:NameIDPolicy
        Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified"
        AllowCreate="true"></samlp:NameIDPolicy>
    <samlp:RequestedAuthnContext Comparison="exact">
        <saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
        </saml:AuthnContextClassRef>
    </samlp:RequestedAuthnContext>
</samlp:AuthnRequest>
Run Code Online (Sandbox Code Playgroud)

我可以编码并发送给IdP.

我想创建示例Java代码以获取此SAML请求,然后创建SAML响应.如何解码请求并验证并创建响应?我是否需要使用证书签署saml响应?然后发送回SP?

谢谢.

java saml assertions saml-2.0

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