如何在跨域MVC4 Web应用程序中实现Singel Sign On(SSO)
我正在使用JSON Web Token将Zendesk单点登录功能实现到我的应用程序中.根据示例代码,我从我的代码隐藏调用ProcessRequest()函数.
我的代码是:
JWTLogin jwtLogin = new JWTLogin();
jwtLogin.ProcessRequest(HttpContext.Current.Request.QueryString["return_to"]);
Run Code Online (Sandbox Code Playgroud)
但是,我收到了一个错误
'Zendesk.JWTLogin.ProcessRequest(System.Web.HttpContext)'的最佳重载方法匹配有一些无效的参数
调用ProcessRequest()函数时,我将传递的"HttpContext"类型参数是什么?
我们在公司的Intranet Portal和Box之间启用了基于SAML的单点登录(SSO),这样用户就不会使用用户名和密码登录Box.com.他们只需点击Intranet Portal上的一个按钮,该按钮就会向Box.com发布SAML断言进行身份验证.
我们希望我们的用户能够直接从Intranet Portal搜索他们的Box文档,Box.com API看起来非常合适.但是,它需要OAuth访问令牌.
问题是:
有没有办法从SAML断言中获取OAuth令牌?
Box Embed允许将文件夹视图嵌入到其他站点.有没有办法只嵌入搜索结果.换句话说,我正在寻找一种方法,<iframe src="https://www.box.com/....?search=keywords"></iframe>只需在iframe中显示搜索结果.
我开始知道,在任何SSO解决方案中,如果SP需要任何其他属性,它可以使用AttributeConsumingService参数在元数据中发布它们.现在可以添加所需的属性,如下所示:
<md:AttributeConsumingService index="0"
xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<md:ServiceName xml:lang="en">ABC</md:ServiceName>
<md:ServiceDescription xml:lang="en">ABC</md:ServiceDescription>
<md:RequestedAttribute isRequired="true"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
Name="urn:oid:2.5.4.42"
FriendlyName="FirstName"/>
</md:AttributeConsumingService>
Run Code Online (Sandbox Code Playgroud)
现在,如果我想在我的SP元数据中添加自定义属性,让我们说"用户"的"角色",我该如何将其添加到元数据中?我的意思是,它的名称是什么(这是我无法找到的!),NameFormat(它是urn:oasis:names:tc:SAML:2.0:attrname-format:uri?)和FriendlyName(我能给出吗?)它在这里作为"角色"?).我在SAML2Core文档中找不到任何与此相关的内容.
有任何建议请!
谢谢,
Abhilash
我一直在阅读OAuth,并发现它大致执行以下操作
- client sends request token during redirect to server
- Server displays authorization screen to resource owner
- Resource owner provides uid and pw (not passed to client)
- Server sends access token back to client
- clients then users the Access token to gain access to a
resource
Run Code Online (Sandbox Code Playgroud)
根据我的情况,OAuth似乎没有启用SSO或联盟,但在某些博客上它暗示它确实执行SSO
这是正确还是不正确.它可以在没有其他协议的帮助下执行SSO吗?
谢谢
我正在开发一个moodle站点,我必须使用外部服务来验证用户身份.此SSO服务应该是唯一的身份验证形式.
外部服务的提供者要求我在他们的服务器上使用他们的登录表单,所以我必须禁用moodle登录表单.
我查看了各种身份验证插件,但它们似乎都没有完全按照我的要求去做.
到目前为止,我认为这就是我要做的事情:
这是我第一次与Moodle合作,所以我有几个问题:
我真的希望你能帮助我:)
我有一个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) 在维基百科的文章说:
其他不与SSO混淆的共享身份验证方案包括OAuth,OpenID,OpenID Connect和Facebook Connect,它们要求用户在每次访问其他站点或应用程序时输入其登录凭据.
但我已经看到OpenID和SAML相比,好像他们试图实现相同的目标(上面的文章说SAML是一种SSO机制).
有人可以解释为什么OpenId不是SSO机制吗?
我是一名新的企业级iOS开发人员。我们正在开发用于管理企业应用程序的应用程序(某种程度上类似于应用程序商店和MDM)。
我被一个问题堆积:
我想为我们的企业应用程序实现单一登录(不使用相同的开发者ID),这意味着如果应用程序商店应用程序已登录,则其他应用程序(涉及我们的企业应用程序平台)不需要用户输入再次输入ID和密码。
我已经搜索了相同的内容,并且得到了一些信息,其中提到了共享钥匙串和iOS Kerberos SSO。但是,共享钥匙串不适用于由不同开发人员开发的应用程序,而且我找不到有关iOS SSO的Kerberos的一些详细资源。
因此,我需要的是:
我是SAML的新手,在完全理解完整的SAML2 SSO过程时遇到了一些麻烦.
具体来说,当服务提供者使用元素响应资源请求时,元素中的哪条数据标识要由身份提供者验证的主体(即用户)?
例如,在以下AuthnRequest中似乎没有任何标识主体的内容:
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="identifier_1"
Version="2.0"
IssueInstant="2004-12-05T09:21:59"
AssertionConsumerServiceIndex="0">
<saml:Issuer>https://sp.example.com/SAML2</saml:Issuer>
<samlp:NameIDPolicy
AllowCreate="true"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/></samlp:AuthnRequest>
Run Code Online (Sandbox Code Playgroud)
在AuthnRequest到达浏览器后(可能来自cookie?),是否会添加标识主体的信息,或者标识特定用户的信息是否完全不会发送给身份提供者?