我的任务是设计一个非常简单的SSO(单点登录)流程.我的雇主已指定应在SAML中实施.我想在确认SAML规范时创建尽可能简单的消息.
我会非常感激,如果你们当中有些人会看我的请求和响应消息,并告诉我,如果他们有意义我的目的,如果他们有任何不需要在那里,如果他们缺少什么,不需要在那里.
另外,我想知道在回复的哪个部分我应该提供有关该主题的其他信息; 特别是主题的电子邮件地址.
交互需要如下工作:
以下是我认为请求应该是:
<?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)
所以,我的问题是:
这是一个有效的SAML交互吗?
可以简化请求或响应XML吗?
我应该在回复的哪个位置放置主题的电子邮件地址?
我非常感谢你的帮助.非常感谢!
-摩根
我正在尝试将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.template为flume-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 Web应用程序.我想为我的应用程序实现SAML单点登录登录.我有这个GitHub onelogin程序来发送请求并获得响应.但它没有正常工作.我在那里创建了一个帐户.但我没有企业帐户.当我运行应用程序时,它将进入onelogin登录页面.我尝试登录,但它没有在响应中返回任何内容,表明我没有权限.如果我也提供了错误的凭据,则它不会给出任何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 Web应用程序,我想实现SAML.这些是我认为实施SAML的正确步骤.
我有一个示例代码,我能够创建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?
谢谢.