我正在努力从控制台应用程序访问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 /):
我尝试过的事情:
如果我启用基于声明的身份验证,并通过PowerShell 激活OAuthAdd-PSSnapin Microsoft.Crm.PowerShell ; $ClaimsSettings = Get-CrmSetting -SettingType OAuthClaimsSettings; $ClaimsSettings.Enabled = $true ; Set-CrmSetting -Setting $ClaimsSettings ;
.
Windows集成身份验证仍然不起作用,但现在可以使用承载身份验证.我可以使用此代码段检索OAuth端点以生成令牌,并用于AuthenticationContext.AcquireTokenAsync
发出令牌,然后在Authorization
HTTP Header中传递它...但是,无论如何,我都会收到此错误:
Bearer error=invalid_token, error_description
=Error during token validation!, authorization_uri=https://our.adfs.domain.org/adfs/oauth2/authorize, …
我有使用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错误,这是失败的.有什么建议?
我是SSO实施的新手。我们正在考虑为使用php应用程序(由我们支持)的客户端实施SSO,以便其员工登录到该应用程序。我们正在为此设置简单SAML。.我一直在阅读有关SSO的文章,其中许多文章很有帮助。请原谅我,我知道这很愚蠢。在这种情况下,谁是IDP,谁将成为服务提供商。客户端显然也将SSO用于其他应用程序。有人可以从头到尾介绍一下我需要做的所有事情吗。.我将研究如何做每个人。.有人可以通过提及需要实现的事情来帮助您。
我尝试在 Windows Server 2012 上安装Active Directory 联合身份验证服务,但不断收到此错误:
目标机器未加入域
在顶部,您可以看到目标服务器有我的服务器名称。为什么我会收到此错误?我该如何修复它?
active-directory windows-server windows-server-2012-r2 adfs3.0
我正在测试WSO2 API Manager v1.9.0以便在我的公司中使用它,我们正在使用Rest API为后端构建一些新应用程序,为我们的前端构建SPA.我们得出结论,它需要使用OpenID Connect并且WSO2支持它.
我们使用ADFS 3.0作为我们的身份提供者,我已经设法将ADFS与WSO2 API Manager联合起来,并且我能够对公司用户进行身份验证以获取访问令牌.该过程通过以下步骤:
考虑到我的公司已经拥有用户数据,是否有办法禁用同意页面并且只需要用户登录?
OpenID Connect规范对我来说是新的,所以如果您需要更多信息,请告诉我.
最好的祝福
每次我尝试通过 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.TaskAwaiter1.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) …
我试着去使用ADFS
的SSO
一个项目。该项目PHP
正在进行中,我正试图为此使用OAuth
。
那么,设置ADFS与OAuth2配合使用的步骤是什么?我对ADFS一无所知,因此无法获得有关OAuth2设置的任何直接指南。
非常感谢。
我对我的 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/Group 和 http://schemas.microsoft.com/ws/2008/06/identity/claims/groups
但这些属性不会映射到 Cognito。我尝试将我的自定义映射到其他属性(例如电子邮件地址)并且取得了成功,只是我无法成功映射值的组。
PS 抱歉,我本想发布更详细地记录该过程的照片,但 imgur 在我的工作中被屏蔽了。
我们要设置ADFS 3.0以启用基于OAuth2的身份验证.我已阅读了大量文档,但仍不清楚是否支持这些文档.
ADFS可以用作oauth的授权服务器,还是ADFS中的oauth2支持仅用作另一个授权服务器的客户端?
任何有关将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)
并发布responseCode
Eg:
$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:
refresh_token
?