我正在开发一个Web应用程序(.NET Core 3.1),该应用程序通过询问身份声明来对用户进行身份验证。当用户首次访问该应用程序时,他/她将被发送到Microsoft以使用用户名和密码登录Azure Active Directory。登录后,客户端将获取一个JWT令牌,该令牌存储在会话存储中。然后,使用JWT令牌对向Web应用程序控制器的每个HTTP请求进行身份验证。
进行集成测试(XUnit)时,我应该如何要求使用此JWT令牌?测试是否应该通过HTTP发布到Azure AD向Azure Active Directory询问此令牌,还是有更好的方法?
答案 0 :(得分:1)
有一个非常好的示例,说明如何在XUnit中通过以下设置实现该目标:
1. Key Vault中的设置机密(用户凭据,应用程序凭据)
2.设置集成测试配置(Key Vault URL,API身份验证
设置,将密钥保管箱秘密添加到应用程序配置)
3.在Visual Studio / AZ CLI中将用户设置为用于Key Vault身份验证
4.使用仅用于应用程序调用的客户端凭据对测试中的请求进行身份验证
5.使用资源拥有者密码凭据验证请求以作为用户的呼叫
此github存储库具有上述方法的代码示例:
https://github.com/juunas11/testing-aad-protected-apis