标签: adfs2.0

我可以使用ADFS 2.0对SQL Server的某些用户进行身份验证吗?

我一直在使用ADFS在VS中使用声明感知模板对AD进行身份验证.我们的一些用户将不在Active Directory中,因此我想知道是否可以配置ADFS以便为这些用户查找SQL Server,然后继续正常运行.

ADFS2.0是否提供自定义身份验证存储?

是一个类似的问题,只有一个人说是的,它可以做,而其他人说你做不到.

c# sql sql-server claims-based-identity adfs2.0

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

使用ADFS2作为IP,使用WIF保护后端WCF服务

我在使用ADFS2来保护从Passively Federated网站调用的后端WCF服务时遇到问题.我有被动联盟在网站上工作,但后端服务给我带来了问题.

拼图的碎片.

  1. 从被动联合网站提供服务的Silverlight客户端.
  2. Silverlight调用托管在被动联合网站上的WCF服务(App Service).
  3. 我在配置中将SaveBootstrapToken设置为true.
  4. 从App Service,我想使用带有ActAs scenarion的BootstrapToken来调用后端WCF服务.
  5. 联合网站和后端WCF服务在ADFS2中设置为单独的RP,启用令牌加密.两者都被允许委托.

后端服务配置:

我使用行为扩展将WIF合并到管道中.

<ws2007FederationHttpBinding>
  <binding name="WS2007FederationHttpBinding_IQuoteService">
    <security mode="TransportWithMessageCredential">
      <message establishSecurityContext="false">
        <issuer address="https://myADFSserver/adfs/services/trust/13/issuedtokenmixedsymmetricbasic256">
        </issuer>
        <issuerMetadata address="https://myADFSserver/adfs/services/trust/mex">
        </issuerMetadata>
      </message>
    </security>
  </binding>
</ws2007FederationHttpBinding>


<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <federatedServiceHostConfiguration name="Service.QuoteService" />
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
      <serviceCredentials>
        <serviceCertificate findValue="000000000000000000000000000000" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>

<services>
  <service name="Service.QuoteService">
    <endpoint address="" binding="ws2007FederationHttpBinding" contract="Service.IQuoteService" bindingConfiguration="WS2007FederationHttpBinding_IQuoteService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>
Run Code Online (Sandbox Code Playgroud)

客户端配置

使用"添加服务引用"工具添加服务时,将在客户端上创建以下配置:

<customBinding>
  <binding name="https://myADFSserver/adfs/services/trust/13/issuedtokenmixedsymmetricbasic256">
    <security defaultAlgorithmSuite="Default" authenticationMode="IssuedTokenOverTransport"
      requireDerivedKeys="false" securityHeaderLayout="Strict" …
Run Code Online (Sandbox Code Playgroud)

wcf adfs wif adfs2.0

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

将简单的Java应用程序与ADFS2集成

我可以将adfs2与java应用程序一起使用吗?我想在java中实现单点登录.我读过一些他们提到过你需要.net框架的文章.

java single-sign-on adfs2.0

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

ADFS 2.0超时以及Freshness Value,TokenLifetime和WebSSOLifetime参数之间的关系

我很想知道ADFS 2.0超时场景中Freshness Value,TokenLifetime和WebSSOLifetime参数之间的关系.我已经对此做了一些分析,我还没有得到清晰的图片.

.net asp.net claims-based-identity wif adfs2.0

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

使用Azure ACS时无法从Active Directory注销

我在我的MVC 4应用程序中使用ACS 2.0.

它已配置为登录,它适用于各种提供程序,包括ADFS.我需要实现注销功能.

由于这个问题已经过时,我使用了这些示例中的代码:

这是它的样子:

    // Load Identity Configuration 
    FederationConfiguration config = FederatedAuthentication.FederationConfiguration;

    // Get wtrealm from WsFederationConfiguation Section 
    string wtrealm = config.WsFederationConfiguration.Realm;
    string wreply = wtrealm; //return url

    // Read the ACS Ws-Federation endpoint from web.Config 
    string wsFederationEndpoint = ConfigurationManager.AppSettings["ida:Issuer"];

    SignOutRequestMessage signoutRequestMessage = new SignOutRequestMessage(new Uri(wsFederationEndpoint));

    signoutRequestMessage.Parameters.Add("wreply", wreply);
    signoutRequestMessage.Parameters.Add("wtrealm", wtrealm);

    FederatedAuthentication.SessionAuthenticationModule.SignOut();

    var signoutUrl = signoutRequestMessage.WriteQueryString();
Run Code Online (Sandbox Code Playgroud)

结果,我得到了我应该重定向的注销URL,它将处理令牌并将我发送回去.URL如下所示:

https://myacsnamespace.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wreply=http%3a%2f%2flocalhost%3a61192%2f&wtrealm=http%3a%2f%2flocalhost%3a61192%2f
Run Code Online (Sandbox Code Playgroud)

因此,它可以像Google,Yahoo和Microsoft帐户一样正常运行.当我退出并尝试访问受保护区域时,我会获得一个身份提供商列表,即使我选择了相同的提供商,我也必须再次登录.

但是,当我使用ADFS提供程序时,它的工作原理如下:

  • 我点击退出并进入可用提供商的页面

  • 我再次选择ADFS提供程序

  • 我用旧的AD凭据到达保护区

  • 如果我将ADFS作为唯一的提供者,则跳过上面的步骤2,并且我一直在不加入登录而无法更改用户.

当我看到会发生什么时,ACS不会处置它从ADFS获得的安全令牌,并重新使用它.

您是否有任何关于如何强制ACS处理此令牌的线索?

提前致谢!

azure single-sign-on adfs2.0 acs asp.net-mvc-4

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

在Sharepoint 2010会话到期后,用户不必在ADFS 2.0中重新进行身份验证

此案例与Wiktor Zychla的问题非常相似,请参阅如何在与ADFS 2.0联合时正确设置超时

我们正在经历相同的行为,ADFS愉快地将用户重定向回Sharepoint站点并重新创建FedAuth cookie,即使ADFS应提示凭证 - 我们希望用户在一段时间的空闲时间后重新进行身份验证.基本上看起来会话总是滑动.

我们已禁用持久性cookie,因此在会话结束时通过关闭浏览器来删除FedAuth cookie,因此在关闭所有浏览器窗口并启动新会话后,用户必须重新进行身份验证,这样才有效.

据我所知,ADFS管理单元中的Web SSO生存期设置控制用户需要在AD FS上重新进行身份验证的时间(再次输入其凭据).Tokenlifetime和LogonTokenCacheExpirationWindow一起控制,当Sharepoint重定向到AD FS时,以便更新FedAuth cookie.

以下是来自http://msdn.microsoft.com/en-us/library/hh446526.aspx的引用:

要强制用户在重定向回ADFS时重新输入凭据,应将ADFS中的Web SSO生存期设置为小于或等于SAMLtokenlifetime减去LogonTokenCacheExpirationWindow的值.

所以,我们做了以下事情:

1.设置SAML令牌的生命周期

Add-PSSnapin Microsoft.ADFS.PowerShell

Set-AdfsRelyingPartyTrust –TargetName "[ourrelayingpartytrustreference]" –TokenLifeTime 7
Run Code Online (Sandbox Code Playgroud)

2.设置LogonTokenCacheExpirationWindow(并禁用持久性cookie)

Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0

$sts = Get-SPSecurityTokenServiceConfig
$sts.UseSessionCookies = $true
$sts.LogonTokenCacheExpirationWindow = (New-Timespan -Minutes 1)

$sts.Update()

iisreset
Run Code Online (Sandbox Code Playgroud)

3.调整的Web SSO生存期:AD FS 2.0管理控制台管理单元中的5分钟(在Powershell中运行Get-ADFSProperties正确返回SsoLifetime:5)

因此预期的结果是:

  1. 用户启动一个全新的会话,请求网站
  2. 浏览器重定向到AD FS,用户输入凭据,浏览器重定向回Sharepoint站点,生成FedAuth cookie
  3. 用户闲置10分钟(以确保会话滑动期已过)
  4. 用户在Sharepoint中请求另一个页面,浏览器被重定向到AD FS
  5. 由于Web SSO生命周期为5分钟,并且正如在msdn文档中指示的那样,它少于SAMLtokenlifetime减去LogonTokenCacheExpirationWindow(SAMLtokenlifetime - LogontokenCacheExpirationWindow = 6分钟)的值,AD FS会提示用户输入凭据,用户输入凭据,浏览器是重定向到请求的Sharepoint页面并重新创建FedAuth cookie.

当前的实际行为(步骤1-4类似):

(5.)AD FS不提示输入凭据,浏览器重定向到Sharepoint页面并重新创建FedAuth cookie.

所以 - 对我们来说,看起来AD FS会话永远不会过期,无论我们做什么.如果我们创建将LogonTokenCacheExpirationWindow值设置为高于SAMLtokenlifetime的错误配置(例如,LogonTokecacheExpirationWindow = 8和SAMLtokenlifetime = 7),我们将得到Sharepoint和AD FS之间循环的预期行为. …

authentication session-timeout sharepoint-2010 federation adfs2.0

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

Azure - web.config中的customErrors ="off"未显示Azure应用程序中的详细错误(云服务)

我有一个部署到Azure的应用程序,它使用ADFS(Active Directory联合服务)进行身份验证.

当用户尝试导航到Azure上的应用程序时,它会将用户重定向到ADFS身份验证页面.用户输入凭据并单击"确定",ADFS会将用户重定向到我的应用的登录页面.

到目前为止,一切都很好.一旦用户点击着陆页,我就会在应用上收到通用服务器错误. 问题:我需要查看详细错误. 我尝试设置<customErrors="off" />,重新打包我的应用程序并重新部署,但这不会给我详细的错误:

在此输入图像描述

这是我尝试过的:我尝试在调试模式下打包我的应用程序(在发布模式不起作用后),我编辑了web.config(在解决方案的根目录,以及在Views文件夹中) ,只是为了涵盖所有基地).没有任何效果.

我究竟做错了什么?

web-config azure custom-errors adfs2.0

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

ADFS不通过NameID

这是设置身份验证的方法。-客户端浏览器将请求(下面的URL)发送到客户端的ADFS服务器,-客户端ADFS然后查看嵌套的中继状态,并将请求转发到我们的ADFS服务器。-我们的ADFS查看请求并将请求发送到我们的APP。

URL在这里。

https://clientadfs.clientdomain.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%3A%2F%2ouradfs.ourdomain.com%2Fadfs%2Fls%2F%26RelayState%3DRPID%3Dhttps%3A%2F%2ourapp.ourdomain.com%2Fvaruna%2Fconsole%2Fsso.aspx%3FsamISso%26lang%3Den_CA
Run Code Online (Sandbox Code Playgroud)

该请求将在ADFS服务器上生成一个没有错误的空白页。

我让提琴手跟踪了客户。客户端使用用户的电子邮件地址来标识用户。我可以在发送到客户端ADFS的SAML令牌中看到此电子邮件地址。此SAML令牌转到我们的ADFS服务器,我看到了从我们的ADFS服务器发出的SAML响应。但是,它没有用户电子邮件地址。我认为这就是问题所在。

在我们的ADFS服务器上,我拥有此客户的索赔(在Claims Provider Trust上)来处理用户ID(即他们的电子邮件):

声明规则名称:电子邮件传入的声明类型:名称ID传入名称ID格式:电子邮件传出名称ID格式:电子邮件传递所有声明值。

这是索赔规则语言中的索赔

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] == "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"]
 => issue(Type = "Email", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType);
Run Code Online (Sandbox Code Playgroud)

在客户端的ADFS配置上,这是他们的电子邮件/用户名配置:

IssuanceTransformRules               : @RuleTemplate = "LdapClaims"
                                       @RuleName = "Pass email"
                                       c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccou
                                       ntname", Issuer == "AD AUTHORITY"]
                                        => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/20
                                       05/05/identity/claims/nameidentifier"), query = ";mail;{0}", param = c.Value);
Run Code Online (Sandbox Code Playgroud)

我不知道我在做什么错。谁能发现我的问题?还是可以建议我应该去哪里看?

谢谢你的帮助!

  • R M

adfs2.0

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

如何在Mac上为ADFS 2.0的"依赖方信任"和"声明提供程序信任"创建联合元数据XML

您好我们希望将我们的Web应用程序与客户现有的ADFS提供程序服务集成.我们的应用程序将使用NodeJS和passport-saml连接到ADFS提供程序.

但是,根据我对生成依赖信任方XML的理解,我们需要Microsoft的向导adfssetup.exe,它只适用于Windows Server.

有没有办法在没有Windows机器的情况下创建此Trust并声明XML文档?

......显然有人可以自由式编码,但我真的不相信自己.

node.js adfs2.0 passport.js

5
推荐指数
0
解决办法
382
查看次数

Azure ACS替代ADFS移动身份验证

我一直在使用azure ACS来验证我的移动客户端与企业ADFS到我的a​​sp.net服务器应用程序.我设法不仅让它在Web浏览器中运行良好,而且还运行在移动应用程序上(使用webview获取一个jwt令牌,然后将其发送到服务器进行验证并生成应用程序身份验证令牌).

但不幸的是,Azure ACS正在停产,因此我不得不寻找替代方案.

使用这篇文章我设法直接使用ADFS auth,没有任何外部服务,这对我来说是一个巨大的优势,因为一些客户可能在他们的内部网上有互联网限制.

当尝试为本机客户端(Windows WPF,Android和iOS)实现此问题时,问题就开始了,因为我无法找到针对这些情况的解决方案.

适用于Android和iOS的ADAL 似乎需要Windows Server 2012 R2.这种限制是一个很大的禁忌.

我找到了第三方auth提供商Auth0,但我真的想避免外部服务.

还有Azure B2C身份验证,但它有相同的外部服务问题.

有没有办法直接在ADFS上实现Azure ACS的功能?我需要的是一种直接从ADFS获取jwt令牌(甚至SAML2令牌)的方法.

asp.net android adfs2.0 ios jwt

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