标签: adfs3.0

401访问Dynamics CRM 2016 Web API时

我正在努力从控制台应用程序访问Dynamics 2016 CRM OData Web API.

我们安装了Dynamics CRM 2016,配置了基于声明的身份验证,并使用AD FS v3.0.

我的理解是控制台应用程序(或Web应用程序)应该能够使用Windows集成身份验证(即NTML或Kerberos)访问Web API而无需任何特殊处理......或者OAuth流程在启用时可能会起作用.

对于访问Dynamics"pages"的常规用户,身份验证工作正常(重定向到AD FS登录页面),但访问OData API似乎不起作用(例如:https://crm.domain.org/api/发现/ v8.0 /):

  • 在浏览器中,我收到Windows登录提示,键入有效凭据总是会导致HTTP 401未经授权的错误
  • 在浏览器中,如果我登录页面导航到Web API URL ,那么我可以访问Web API(即必须设置一些cookie并且我已经被隐式授权)
  • 从代码,使用具有特定有效凭据(或当前凭据)的HttpClient,我也得到401

我尝试过的事情:

  • 如果我完全禁用基于声明的身份验证,HttpClient工作正常,我可以访问OData API
  • 如果我启用基于声明的身份验证,并通过PowerShell 激活OAuthAdd-PSSnapin Microsoft.Crm.PowerShell ; $ClaimsSettings = Get-CrmSetting -SettingType OAuthClaimsSettings; $ClaimsSettings.Enabled = $true ; Set-CrmSetting -Setting $ClaimsSettings ;.

    Windows集成身份验证仍然不起作用,但现在可以使用承载身份验证.我可以使用此代码段检索OAuth端点以生成令牌,并用于AuthenticationContext.AcquireTokenAsync发出令牌,然后在AuthorizationHTTP Header中传递它...但是,无论如何,我都会收到此错误:

    Bearer error=invalid_token, error_description =Error during token validation!, authorization_uri=https://our.adfs.domain.org/adfs/oauth2/authorize, …

oauth http-status-code-401 adfs3.0 dynamics-crm-2016

25
推荐指数
1
解决办法
2193
查看次数

ADFS没有P3P策略

我有使用SAML身份验证的应用程序,我们在2012 R2机器上安装了AD FS 3.0.我认为用户确实经过身份验证,但由于我的应用程序返回错误,因此存在问题,这里是我得到的响应头:

HTTP/1.1 200 OK
Cache-Control: no-cache,no-store
Pragma: no-cache
Content-Length: 5851
Content-Type: text/html; charset=utf-8
Expires: -1
Server: Microsoft-HTTPAPI/2.0
P3P: CP="ADFS doesn't have P3P policy, please contact your site's admin for more details."
Set-Cookie: MSISAuthenticated=OC8xOC8yMDE1IDI6NTg6MzQgUE0=; path=/adfs; HttpOnly; Secure
Set-Cookie: MSISLoopDetectionCookie=MjAxNS0wOC0xODoxNDo1ODozNFpcMQ==; path=/adfs; HttpOnly; Secure
Date: Tue, 18 Aug 2015 14:58:34 GMT
Run Code Online (Sandbox Code Playgroud)

现在问题是什么,据我所知,用户确实经过身份验证,但我的应用程序无法继续.搜索谷歌我发现此链接,但此KB安装在ADFS服务器上.我相信由于P3P错误,这是失败的.有什么建议?

adfs windows-server-2012-r2 adfs3.0

8
推荐指数
1
解决办法
7571
查看次数

为PHP应用程序实现SSO的步骤

我是SSO实施的新手。我们正在考虑为使用php应用程序(由我们支持)的客户端实施SSO,以便其员工登录到该应用程序。我们正在为此设置简单SAML。.我一直在阅读有关SSO的文章,其中许多文章很有帮助。请原谅我,我知道这很愚蠢。在这种情况下,谁是IDP,谁将成为服务提供商。客户端显然也将SSO用于其他应用程序。有人可以从头到尾介绍一下我需要做的所有事情吗。.我将研究如何做每个人。.有人可以通过提及需要实现的事情来帮助您。

php single-sign-on saml-2.0 adfs3.0

7
推荐指数
2
解决办法
5598
查看次数

目标机器未加入域

我尝试在 Windows Server 2012 上安装Active Directory 联合身份验证服务,但不断收到此错误:

目标机器未加入域

错误信息

在顶部,您可以看到目标服务器有我的服务器名称。为什么我会收到此错误?我该如何修复它?

active-directory windows-server windows-server-2012-r2 adfs3.0

6
推荐指数
1
解决办法
4134
查看次数

使用OpenID Connect与WSO2 API Manager和ADFS

我正在测试WSO2 API Manager v1.9.0以便在我的公司中使用它,我们正在使用Rest API为后端构建一些新应用程序,为我们的前端构建SPA.我们得出结论,它需要使用OpenID Connect并且WSO2支持它.

我们使用ADFS 3.0作为我们的身份提供者,我已经设法将ADFS与WSO2 API Manager联合起来,并且我能够对公司用户进行身份验证以获取访问令牌.该过程通过以下步骤:

  1. 用户单击登录链接,它将重定向到ADFS登录页面;
  2. 用户进行身份验证,并将其重定向到同意页面;
  3. 用户批准访问权限,并将其重定向到包含访问令牌的链接.

考虑到我的公司已经拥有用户数据,是否有办法禁用同意页面并且只需要用户登录?

OpenID Connect规范对我来说是新的,所以如果您需要更多信息,请告诉我.

最好的祝福

wso2 openid-connect adfs3.0

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

UseWsFederationAuthentication - AuthenticationException: 根据验证程序,远程证书无效

每次我尝试通过 VS2015 和 IIS Express 在我的开发盒上运行我的 MVC 项目时,我都会收到一个错误。它使用此代码对我们的 ADFS 服务器进行身份验证。

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
            app.UseCookieAuthentication(new CookieAuthenticationOptions());

            app.UseWsFederationAuthentication(
                new WsFederationAuthenticationOptions
                {
                    Wtrealm = realm,
                    MetadataAddress = adfsMetadata
                });
Run Code Online (Sandbox Code Playgroud)

这是我在浏览器中遇到的错误。

[AuthenticationException: 根据验证程序,远程证书无效。]
System.Net.TlsStream.EndWrite(IAsyncResult asyncResult) +231
System.Net.PooledStream.EndWrite(IAsyncResult asyncResult) +15
System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult) ar) +119

[WebException: 底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。]
System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) +606 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) + 64

[HttpRequestException: 发送请求时发生错误。]
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 System.Runtime.CompilerServices.TaskAwaiter` 1.GetResult() +28 Microsoft.IdentityModel.Protocols.d__0.MoveNext() +453

[IOException:无法从以下位置获取文档:https://adfs.DOMAIN.com/FederationMetadata/2007-06/FederationMetadata.xml] Microsoft.IdentityModel.Protocols.d__0.MoveNext() +830 System.Runtime.CompilerServices.TaskAwaiter。 ThrowForNonSuccess(Task task) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 System.Runtime.CompilerServices.TaskAwaiter 1.GetResult() +28 Microsoft.IdentityModel.Protocols.<GetAsync>d__1.MoveNext() +606 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +92 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) …

asp.net-mvc ssl-certificate ws-federation owin adfs3.0

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

用于SSO的PHP + ADFS(通过OAuth)-如何设置ADFS?

我试着去使用ADFSSSO一个项目。该项目PHP正在进行中,我正试图为此使用OAuth

那么,设置ADFS与OAuth2配合使用的步骤是什么?我对ADFS一无所知,因此无法获得有关OAuth2设置的任何直接指南。

非常感谢。

php single-sign-on oauth-2.0 adfs3.0

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

如何将 AD FS 组成员身份映射到自定义 AWS Cognito 属性?

我对我的 AD FS 服务器有以下声明:

LDAP 属性:
令牌组 - 不合格名称

传出索赔类型:团体

它在我的 Saml 响应中返回用户所属的组:

    <AttributeStatement>
        <Attribute Name="http://schemas.xmlsoap.org/claims/Group">
            <AttributeValue>Domain Users</AttributeValue>
            <AttributeValue>AWS-Production</AttributeValue>
            <AttributeValue>AWS-Dev</AttributeValue>
        </Attribute>
    </AttributeStatement>
Run Code Online (Sandbox Code Playgroud)

如何将这些组映射到自定义认知用户池属性?

我尝试使用以下 SAML 属性名称进行映射: http://schemas.xmlsoap.org/claims/Grouphttp://schemas.microsoft.com/ws/2008/06/identity/claims/groups

但这些属性不会映射到 Cognito。我尝试将我的自定义映射到其他属性(例如电子邮件地址)并且取得了成功,只是我无法成功映射值的组。

PS 抱歉,我本想发布更详细地记录该过程的照片,但 imgur 在我的工作中被屏蔽了。

amazon-web-services saml-2.0 amazon-cognito adfs3.0

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

ADFS作为OAuth2提供商/认证服务器可能吗?

我们要设置ADFS 3.0以启用基于OAuth2的身份验证.我已阅读了大量文档,但仍不清楚是否支持这些文档.

ADFS可以用作oauth的授权服务器,还是ADFS中的oauth2支持仅用作另一个授权服务器的客户端?

任何有关将adfs设置为oauth提供者/服务器的帮助都表示赞赏.

authentication authorization adfs oauth-2.0 adfs3.0

4
推荐指数
1
解决办法
9491
查看次数

使用ADFS OAuth刷新令牌

我将ADFS3 OAuth2配置为返回Refresh Tokens:

PS> Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -IssueOAuthRefreshTokensTo AllDevices
PS> Set-AdfsRelyingPartyTrust -TargetName "RPT Name" -TokenLifetime 10
PS> Set-AdfsProperties -SSOLifetime 480
Run Code Online (Sandbox Code Playgroud)

Access Token持续10分钟,Refresh Token持续480分钟.

然后我通过GETing生成一个访问令牌:

https://myadfsdomain/adfs/oauth/authorize
    ?response_type=code
    &client_id=MYCLIENTID
    &redirect_uri=https://myserver/callback
    &resource=MYRelyingPartyId
Run Code Online (Sandbox Code Playgroud)

并发布responseCodeEg:

$http({method: "post", 
       headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
       url: "https://myadfsdomain/adfs/oauth2/token", 
       data: "client_id=MYCLIENTID&code=" + responseCode + "&redirect_uri=https://myserver/callback&grant_type=authorization_code"  })
Run Code Online (Sandbox Code Playgroud)

响应具有访问令牌,类型,过期时间和刷新令牌:

{"access_token":"blah...",
 "token_type":"bearer",
 "expires_in":600,
 "refresh_token":"blahblah..."}
Run Code Online (Sandbox Code Playgroud)

大.访问令牌现在有效,无论它配置多久(这里10分钟)

问题是,一旦该时间到期,我们如何使用它refresh_token来获取另一个访问令牌?IE:

  • 什么是URL?
  • 我们发布了吗?
  • 我们用什么参数来POST refresh_token

oauth adfs oauth-2.0 adfs3.0

3
推荐指数
1
解决办法
4142
查看次数