我正在使用将ADFS登录页面与我的应用程序集成的功能。
流量
用户将尝试访问页面。这里系统将尝试验证用户。
系统会将用户重定向到ADFS登录页面。
用户将输入登录信息。如果用户已通过身份验证,则用户将被重定向回具有授权令牌信息的应用程序。
在重定向页面时,我遇到阅读令牌信息的困难。
我试过
我可以将页面重定向到ADFS登录页面,如果用户使用以下网址格式进行身份验证,我也可以重定向回我的系统:
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 :(得分:1)
简而言之,我建议您遵循以下教程: https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/development/enabling-openid-connect-with-ad-fs-2016 我按照那里的步骤进行操作(使用OAuth2 / OpenID连接)。该网站上还有一些其他有趣的资源。
更多指示:
1)对于使用OAuth2,ADFS服务器上的登录URL应类似于: 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 Server 2016上的ADFS 4.0基本相同。