2017-07-22 132 views
1

我正在使用将ADFS登录页面与我的应用程序集成的功能。使用ADFS的基于令牌的身份验证

流量

用户会尝试访问页面。这里系统会尝试认证用户。

系统将用户重定向到ADFS登录页面。

用户将输入登录信息。如果用户通过身份验证,则用户将通过授权令牌信息重定向回应用程序。

当页面重定向回来时,我正面临读取令牌信息的困难。

我试图

我能够页面重定向到ADFS登录页面,也可以重定向回我的系统,如果用户使用的是以下URL格式认证:

https://adfs-domain-name/adfs/ls

请找回下面的代码片段,我回到页面后读取令牌信息。

ClaimsPrincipal claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal; 
bool IsAuthenticated = claimsPrincipal.Identity.IsAuthenticated; 
int ClaimCount = claimsPrincipal.Claims.Count(); 

这里我将IsAuthenticated设置为false,并将ClaimCount设置为0结果。

我的代码或连接ADFS登录页面的方式有什么不正确吗?

任何人都可以帮助我解决这个问题吗?

请让我知道,如果您有任何疑虑或查询,或者我缺少一些东西。

+0

您如何连接到ADFS? WS-美联储? SAML?你检查过ADFS RP重定向URL吗?如果使用例如跟踪连接FF SAML Trace,你看到了这些说法吗?什么版本的.NET? – nzpcmad

+0

我正在使用SAML作为协议。我无法获得索赔详情。从ADFS登录页面成功登录后,该页面将发回到我的应用程序。 –

+0

在ADFS方面针对该RP配置了哪些声明?那些AD属性是否有值? ADFS不会传递空值。 – nzpcmad

回答

0

总之,我会推荐以下教程: https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/development/enabling-openid-connect-with-ad-fs-2016 我遵循了那里的步骤,并得到它的工作(使用OAuth2/OpenID连接)。该网站上还有一些其他有趣的资源。

一些更多的指针:

1)对于使用的OAuth2登录URL的ADFS服务器上应该是这样的: https://adfs.contoso.com/adfs/oauth2/authorize?[parameters]

的URL参数是很好的记录在这里: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

2 )然后,您可以将ADAL库用于前端和后端代码。实质上,前端代码将把上述登录URL放在一起,并将令牌保存在浏览器的会话存储中,以便随每个请求一起发送。后端库将验证并解码令牌(进入ClaimsPrincipal)。你可以在这里找到合适的库组件: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-authentication-libraries

啊,是啊,我知道这些组件和文档描述了Azure的AD(ADFS在云中),但它们运行有什么本质上是在Windows服务器上一样ADFS 4.0

相关问题