- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
到目前为止,我已经了解到Rally RestAPI不支持SSO登录。我相信从2014年1月起,这种情况将不再成立。支持SSO登录的Excel Rally加载项使用了相同的API(此处是Rally Add-in for Excel的链接)。我可以获取Rally Excel加载项的源代码还是至少有人可以提供使用Rally RestAPI的SSO示例?
我想做与Excel插件导出功能完全相同的事情,但想在纯.net应用程序中做。
最佳答案
我在C#Rest Api中添加了一个howto,它解释了如何像Rally在Excel插件中那样进行SSO身份验证。我在这里粘贴是为了方便。
谢谢,斯科特
简短的Rally SSO入门
Rally Web服务API(WSAPI)本机仅支持基本身份验证。使用基本身份验证,必须使用用户名和密码启动WSAPI会话,该用户名和密码根据直接存储在Rally中的用户名和密码列表进行验证。在客户开始使用单一登录(SSO)之前,此方法可以正常工作。 SSO允许客户端使用单个企业范围的身份验证机制(例如LDAP或Active Directory)来管理用户凭据和密码。到目前为止,使用启用了SSO的WSAPI要求客户端为所有希望使用Rally WSAPI的用户在Rally中维护一个重复的用户列表(“白”列表)。现在,对Rally的最新更改允许WSAPI用户使用他们的SSO凭据访问Rally,并减轻了将这些用户保持在“白名单”中的需求。
注意:Rally当前的SSO实现基于SAML规范,该规范要求用户与浏览器进行交互以完成身份验证。因此,此技术需要用户与浏览器进行交互,因此与无头WSAPI客户端(例如将Rally与VCS和错误跟踪工具同步的WSAPI客户端)不兼容。
启动SSO连接时,用户提供一个URL,该URL与Rally的服务提供商(SP)开始SSO握手,此后涉及客户端的身份提供商(IdP),并以Rally以代表有效的已验证会话的cookie响应结束。如果该经过身份验证的会话cookie包含在任何后续的WSAPI调用中,则Rally会将那些调用与经过身份验证的用户相关联,并且WSAPI调用将得到认证。为了使成功进行SAML SSO身份验证之后的WSAPI调用易于访问已认证的会话cookie,Rally寻找添加到初始SSO URL的参数,如果存在,它将返回一个特殊的包含会话cookie的特殊网页。文本作为SSO握手的最终产品。用户可以使用该数据来构造cookie,以在随后的WSAPI调用中使用。
注意:以下示例URL(可能)特定于Rally的内部SSO实现。由于使用SSO允许客户使用自己的SSO基础结构(至少是IdP部分)提供自己的身份验证,因此SSO URL将是客户特定的。请与您的Rally TAM或Rally支持人员联系以获取有关SSO URL的帮助。
原始SSO URL如下所示:
https://sso.rallydev.com/sp/startSSO.ping?PartnerIdpId=pingidp.f4tech.com-29577
TargetResource=https://us1.rallydev.com/slm/j_sso_security_check?noRedirect=true
https://sso.rallydev.com/sp/startSSO.ping?PartnerIdpId=pingidp.f4tech.com-29577&TargetResource=https://us1.rallydev.com/slm/j_sso_security_check?noRedirect=true
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>SSO Token</title>
</head>
<body>
<form>
<input type="hidden" name="authCookieName" value="ZSESSIONID"/>
<input type="hidden" name="authCookieValue" value="khkjhkhkhkhkjhh"/>
</form>
</body>
</html>
Example:
var cInfo = new ConnectionInfo();
cInfo.UserName = "myName";
cInfo.Password = "pass";
cInfo.Server = new Uri("https://host.com");
cInfo.AuthType = Rally.RestApi.AuthorizationType.Basic;
var conn = new RallyRestApi(cInfo);
public class MyConnectionInfo : Rally.RestApi.ConnectionInfo
{
public override void doSSOAuth()
{
// Launch a browser to the this.server URI.
// The browser will close automatically if it successfully reaches the SSO landing page
// Users can cancel the SSO handshake
// Abort if the handshake is successful, but didn't arrive at the SSO landing page
var ssoDialog = new SSOAuthDialog(server);
DialogResult result = ssoDialog.ShowDialog();
if (result == DialogResult.Cancel)
throw new Exception("SSO authorization canceled");
else if (result == DialogResult.Abort)
throw new Exception(ssoDialog.abortReason);
// Parse the SSO landing page into a Cookie and save it
AuthCookie = parseSSOLandingPage(ssoDialog.getBrowser().DocumentText);
// Infer Cookie values from SO Landing Page URL if not set
if (String.IsNullOrWhiteSpace(authCookie.Domain) || authCookie.Domain == "null")
authCookie.Domain = ssoDialog.getBrowser().Url.Host;
AuthCookie.Secure = String.Equals(ssoDialog.getBrowser().Url.Scheme,"https",StringComparison.InvariantCultureIgnoreCase);
// Set a specific port port if the SSO Landing Page URL has one
if (!ssoDialog.getBrowser().Url.IsDefaultPort)
Port = ssoDialog.getBrowser().Url.Port;
}
}
public partial class SSOAuthDialog : Form
{
public String abortReason;
public SSOAuthDialog(Uri url)
{
InitializeComponent();
webBrowser.Url = url;
}
private void documentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// We have found the SSO Landing Page.
if (webBrowser.DocumentText.Contains("authCookieName") && webBrowser.DocumentText.Contains("authCookieValue"))
{
Trace.TraceInformation("Found SSO authentication token on page: {0}", e.Url.AbsolutePath);
DialogResult = DialogResult.OK;
Close();
}
// We have landed on the Rally ALM page
// This is usually caused by a bad URL
else if (webBrowser.DocumentText.Contains("window.FEATURE_TOGGLES"))
{
abortReason = String.Format("The SSO handshake was successful, but the 'RelayState' was not correctly set. Contact your administrator to obtain the correct URL parameter to set the SSO handshake 'RelayState' to: https://rally1.rallydev.com/slm/j_sso_security_check?noRedirect=true");
Trace.TraceError(abortReason);
DialogResult = DialogResult.Abort;
Close();
}
}
public WebBrowser getBrowser()
{
return webBrowser;
}
}
SSO Example:
var cInfo = new MyConnectionInfo();
cInfo.Server = new Uri("https://host");
cInfo.AuthType = Rally.RestApi.AuthorizationType.SSO;
// This will cause an SSO authentication event
var conn = new RallyRestApi(cInfo);
// This will not b/c it will just use the auth Cookie already in cInfo
var conn2 = new RallyRestApi(cInfo);
关于rally - 如何使用Rally.RestApi.dll进行SSO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21055043/
我是 Golang 的菜鸟,试图创建 RestApi,它从 postman 那里获取请求并将其存储在 MYSQL 中。 在尝试插入具有两列(名称和标题)但一列在插入数据库时始终为空的行时,请告诉我
到目前为止,我已经了解到Rally RestAPI不支持SSO登录。我相信从2014年1月起,这种情况将不再成立。支持SSO登录的Excel Rally加载项使用了相同的API(此处是Rally Ad
Outlook RestAPI 无法正常工作 我正在关注文档 https://dev.outlook.com/RestGettingStarted/Tutorial/python 我从 Outlook
虽然我能够提取特定测试集中存在的所有测试用例并修改或更新所有测试结果。更新该测试集中的测试用例后,测试集未反射(reflect)结论(通过/失败)。 如果我导航到其中一个 tescase 详细信息页面
我有一个问题。当我有其他实体时,我不知道如何创建 API。我与 Postman 合作,当我请求查看数据库中的所有项目时,我也想接收这些实体。 例如,这是我的实体: @Entity @Table(nam
我尝试调试了大约 2 个小时,但没有成功。 这是我的错误: jinja2.exceptions.UndefinedError jinja2.exceptions.UndefinedError: 'it
我有一个相当简单的 .NET WebApi 应用程序,我试图在 IIS 中托管它。按照 MS 站点上关于此的所有说明进行操作。这是它的启动方法。 public static void Main
我刚刚在 Cloudant 仪表板上创建了新文档 { "_id": "548de788223ed6fa9f1dd6db1b51a32e", "_rev": "9-364c9192decc399
我是 Node Passport 身份验证的新手。我完整的写了一个 Passport 认证的例子如下: var express = require('express'); var passport =
我正在开发一个使用 paypal 的 rest api 的支付系统。到目前为止一切顺利,我可以毫无问题地在沙盒模式下进行支付。 现在我需要 paypal 来通知我某些事件......这就是我想使用 w
我刚开始学习 Go,想创建自己的 REST API。 问题很简单:我想将我的 api 的路由放在不同的文件中,例如:routes/users.go,然后我将其包含在“main”函数中并注册这些路由。
以前学生的时候只知道 Server 能做个分析,能返回个图或者要素 JSON,RESTAPI 也是工作之后才逐渐知道的。 MapServer 和 FeatureServer 都能容纳 FeatureL
这个问题在这里已经有了答案: Return JSON response from Flask view (14 个回答) 去年关闭。 我在 Flask 上写申请.对于 RestAPI我在用 flask
我正在开发一个需要从Outlook.com和Office 365检索和编辑日历事件的应用程序。我已经看到有2个选项: Outlook REST API Microsoft Graph 它们似乎具有几乎
我用了this official guide在 Windows 上安装 Docker 容器。一切看起来都很好,我现在可以在 Windows 容器上运行 IIS。 但是,我在任何地方都看不到它,也不知道
尝试创建对象的对象而不是我的代码正在创建对象数组。 我的程序代码 $output['result'] =[]; $query = "SELECT DISTINCT ti.`test_id`, ti.`
我有 Salesforce 应用程序管理员用户名和密码(客户端 ID 除外)。我想使用 RestAPI 生成授权:不记名 token 。您能否告诉我如何使用 RestAPI 生成授权:不记名 toke
我们有一个第三方 API,它同时具有 GET 和 PUT 方法。第三方 API 仅以 XML 格式返回响应和接受。 api 看起来像 https://bh.org/api/v2/prj/A152 返回
作为 ReactJS 新手,我尝试解析 RestfulAPI JSON 响应,但是,我无法检索所有元素。在尝试访问 text.subjects.code 和 text.subjects.descrip
我已经尝试使用此代码 fragment 来使用 HTTPResponse 从 android 获取响应 String s=""; try { HttpClient httpClient=new
我是一名优秀的程序员,十分优秀!