这些是用于Microsoft服务单点登录的众多技术和流行语.
有人可以解释ADFS,WIF,WS联合,SAML和STS(安全令牌服务),包括每个使用的位置和时间.
我想先说这个,直到现在,我甚至没有听过SAML,更不用说涉及它的SSO策略了.这一点,加上我几乎没有做节点一年的事实,就是一个光荣的新手三明治.目前,我有一个客户端使用SAML和ADFS作为他们的SSO提供商.我已经使用passport.js进行本地登录,因此使用passport-saml似乎是使用SAML/ADFS实现SSO的方法.在进行我的研究时,我发现了几个不同的实现指南,但由于我完全不了解这个过程,我可以使用一些指针.
在passport-saml文档中,我找到了以下证明适用于ADFS的策略(根据文档):
{
entryPoint: 'https://ad.example.net/adfs/ls/',
issuer: 'https://your-app.example.net/login/callback',
callbackUrl: 'https://your-app.example.net/login/callback',
cert: 'MIICizCCAfQCCQCY8tKaMc0BMjANBgkqh ... W==',
identifierFormat: null
}
Run Code Online (Sandbox Code Playgroud)
我想我的主要问题是这个证书来自哪里?这是我通过SSL在我的服务器上生成的证书吗?提供商是否提供此服务?
在我的搜索中,我也发现了这个:https://github.com/auth0/passport-wsfed-saml2,它基于passport-saml.为ADFS建议以下配置:
{
path: '/login/callback',
realm: 'urn:node:app',
homeRealm: '', // optionally specify an identity provider
identityProviderUrl: 'https://auth10-dev.accesscontrol.windows.net/v2/wsfederation',
cert: 'MIIDFjCCAf6gAwIBAgIQDRRprj9lv5 ... ='
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,路径对象是显而易见的,我的提供者已经给了我一个providerURL.但是对我来说,境界毫无意义,而且还有那种证明.
有人能为我提供一个在node.js网站上实现SAML/ADFS SSO的"类似于解释的方式"吗?或者帮助我对我概述的两个解决方案所要求的论证对象做出正面或反面的讨论?非常感谢提前!
我最近开始研究新的ASP.Net Identity框架和Katana中间件,那里有大量的代码和文档,但我看到的是很多相互矛盾的信息,我想这是一个代码更新频率增加的结果.
我期待使用WsFederation认证与内部ADFS分2次服,但方式OWIN认证管道工程有我有点困惑,我希望有人能提供一些确切的信息.
具体来说,我感兴趣的是应该连接中间件的顺序以及在各种场景中需要哪些模块,我想摆脱任何不需要的东西,同时确保过程尽可能安全.
例如,它似乎UseWsFederationAuthentication应该与之结合使用UseCookieAuthentication,但我不确定正确的AuthenticationType是什么(这篇帖子暗示它只是一个标识符字符串,但它的值是否显着?)或者即使我们仍然需要用SetDefaultSignInAsAuthenticationType.
我还注意到Katana项目讨论板上的这个帖子,Tratcher在那里提到了一个常见的错误,但是对于哪部分代码出错是不是很具体.
就个人而言,我现在使用以下(使用自定义SAML令牌处理程序将令牌字符串读入有效的XML文档),它对我有用,但它是否最佳?
var appURI = ConfigurationManager.AppSettings["app:URI"];
var fedPassiveTokenEndpoint = ConfigurationManager.AppSettings["wsFederation:PassiveTokenEndpoint"];
var fedIssuerURI = ConfigurationManager.AppSettings["wsFederation:IssuerURI"];
var fedCertificateThumbprint = ConfigurationManager.AppSettings["wsFederation:CertificateThumbprint"];
var audienceRestriction = new AudienceRestriction(AudienceUriMode.Always);
audienceRestriction.AllowedAudienceUris.Add(new Uri(appURI));
var issuerRegistry = new ConfigurationBasedIssuerNameRegistry();
issuerRegistry.AddTrustedIssuer(fedCertificateThumbprint, fedIssuerURI);
app.UseCookieAuthentication(
new CookieAuthenticationOptions
{
AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType // "Federation"
}
);
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = appURI,
SignOutWreply = appURI,
Configuration = new WsFederationConfiguration
{
TokenEndpoint = fedPassiveTokenEndpoint …Run Code Online (Sandbox Code Playgroud) 我们有一个使用WIF的ASP.NET应用程序.我们的web.config文件有一个这样的部分:
<audienceUris>
<add value="https://someapp.mycompany.com/App/" />
</audienceUris>
<federatedAuthentication>
<wsFederation passiveRedirectEnabled="true" issuer="https://adfs.mycompany.com/adfs/ls/" realm="https://someapp.mycompany.com/App/" requireHttps="true" />
<cookieHandler requireSsl="false" />
</federatedAuthentication>
Run Code Online (Sandbox Code Playgroud)
每个例子中,我看到两个audienceUris和realm值是相同的.这两者有什么区别?我们俩都需要它们吗?
ADAM,Active Directory,LDAP,ADFS,Windows Identity,卡片空间和哪个服务器(Windows 2003,Windows 2008)使用什么之间有什么区别/关系?
我使用ADFS获得了许多浏览器错误消息,所有形式.
访问该网站时出现问题.尝试再次浏览该网站.如果问题仍然存在,请与此站点的管理员联系并提供参考编号以确定问题.参考编号:c14bcf7c-268d-46be-82c3-7c1d873c3df2
我试图在事件日志中找到这些无济于事.
您如何使用参考编号来追踪错误?
一直在用几个墙撞到我的头上,所以希望一些CRM/Dynamics专家可以帮我一臂之力!
我正在尝试以编程方式从我们的Dynamics CRM实例中获取数据,在Node支持的Express应用程序中使用一组管理凭据.此Express应用程序托管在托管CRM的网络之外的单独服务器上.然后,应用程序将请求,处理并将CRM数据提供给任何已访问的用户(由应用程序中的角色/权限控制),这意味着最终用户只需登录Express应用程序,而无需登录通过ADFS,以便应用程序访问CRM实例.
我们的CRM设置是一个配置为面向互联网(IFD)的内部部署服务器.这使用Active Directory联合身份验证服务.我们的Web应用程序代理服务器在网络的外围运行联合服务,与内部网络上的ADFS服务器进行通信.ADFS对从网络外部(从Internet)连接到内部AD的用户进行身份验证.经过身份验证后,代理允许用户连接到CRM.
我们的本地活动目录与Azure AD同步,因为我们有混合部署.任何O365服务(在线交换,共享点等)都在后台使用Azure AD.我们同步Active目录,因此我们只需要在一个地方管理用户.
CRM有一个端点,例如https://my.crm.endpoint,我在Azure门户中注册了一个应用程序(称为CRM App),主页设置为CRM端点https://my.crm.endpoint.
问题是否将应用程序的主页设置为https://my.crm.endpoint足以将其"链接"到我们的内部CRM实例?
我编写了一个脚本(crm.js),它使用它的应用程序ID 成功请求在Azure门户中注册的CRM应用程序的访问令牌.
示例令牌
eyJ0dWNyIjoiMSIsImlkcCI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzE5ZTk1...
Run Code Online (Sandbox Code Playgroud)
然后,我使用持票令牌尝试通过通常的端点从Dynamics获取一些联系人:https://my.crm.endpoint/api/data/v8.2/contacts?$ select = fullname,contactid
这失败了,我收到一条401 Unauthorised错误消息.
问题任何人都可以建议问题是什么?和/或提供有关如何连接Web应用程序(在我的案例中为Express)的详细信息,以便对使用ADFS的内部部署服务器(IFD)上运行的Dynamics CRM进行身份验证请求?
crm.js
let util = require('util');
let request = require("request");
let test = {
username: '<my.email@address.com>',
password: '<my_password>',
app_id: '<app_id>',
secret: '<secret>',
authenticate_url: 'https://login.microsoftonline.com/<tenant_id>/oauth2/token',
crm_url: 'https://<my.crm.endpoint>'
};
function CRM() { }
CRM.prototype.authenticate = function () {
return new Promise((resolve, reject) => { …Run Code Online (Sandbox Code Playgroud) microsoft-dynamics adfs dynamics-crm node.js azure-active-directory
我们的网站使用ADFS进行身份验证.为了减少每次请求的cookie有效负载,我们开启了IsSessionMode(请参阅节食中的fedauth cookies).
我们需要做的最后一件事就是在负载均衡的环境中实现这个功能,就是实现一个农场就绪的SecurityTokenCache.实现看起来非常简单,我主要想知道在处理SecurityTokenCacheKey以及TryGetAllEntries和TryRemoveAllEntries方法时是否存在任何问题(SecurityTokenCacheKey具有Equals和GetHashCode方法的自定义实现).
有没有人有这样的例子?我们计划使用AppFabric作为后备存储,但使用任何持久存储的示例将是有用的 - 数据库表,Azure表存储等.
以下是我搜索过的一些地方:
谢谢!
JD
3/16/2012更新 Vittorio的博客链接到使用新的.net 4.5内容的示例:
ClaimsAwareWebFarm 这个示例是对我们很多人的反馈的回答:你想要一个显示农场就绪会话缓存的示例(而不是tokenreplycache),这样你就可以通过引用而不是交换大的cookie来使用会话; 并且您要求一种更简单的方法来保护农场中的cookie.
我有一个MVC内部网站点,需要使用AD帐户进行身份验证.
我设置ADFS 3.0(Win Server 2012 R2)并按此设置ADFS信赖方信任.
这篇文章介绍了Ws-Federation OWIN组件,我想使用它.它提到了如何连接到Azure AD,但没有关于ADFS的任何内容.
我尝试设置配置属性"MetadataAddress"和"Wtrealm"以匹配我在ADFS中配置但在运行时我收到错误:
A default value for SignInAsAuthenticationType was not found in IAppBuilder Properties.
This can happen if your authentication middleware are added in the wrong order, or if one is missing.
Run Code Online (Sandbox Code Playgroud)
我正在寻找正确的方法删除此错误
我尝试通过WPF应用程序连接到SharePoint Online实例.我发现这篇文章描述了一个可能的解决方案,但问题是特定实例前面有一个Active Directory联合身份验证服务(ADFS),我不知道如何获取auth-token.(我无法为我的应用程序创建证书以对adfs进行身份验证.)
任何已经完成此操作的人都可以通过一些代码片段来支持我吗?