我试图在互联网上寻找所有内容,但不知道如何才能实现我所要求的目标。这是我的企业应用程序,它使用 Asp.net Identity 进行基于表单的身份验证。我扩展了用户和角色以及组以在我的代码中提供授权。 (注意:不使用任何组/角色指令)。
现在,我被要求考虑更改代码以适应 Azure Active Directory 身份验证的可能性。我尝试阅读如何注册应用程序、将用户发送到 Azure 站点进行身份验证、获取令牌等。但是我陷入了“之后做什么?”我已经验证了用户如何使用我现有的 Asp.net 身份模型,其中用户存储在 sql 数据库中。如何使用此令牌来关联现有用户。
此外,当我更改项目以允许 Azure AD 时,它会删除 Aspnet.Identity 包,因为它与 Azure AD 不兼容!
我什至尝试手动将两个包并排保存,我必须指出用户被发送到 Azure 上进行身份验证的位置,然后转移回主页,然后再次登录到 Azure AD,永不停歇的循环。
总结一下这个问题:如何从 AAD 验证用户身份并继续使用现有的角色和组授权。
Edit:我尝试创建单独的 Web 服务,它将对用户进行身份验证并发送 JWT 令牌。如果我直接在浏览器上调用它,它会起作用,但是,当我尝试从我的网络应用程序调用此服务时,我收到奇怪的错误
Application with identifier 'a2d2---------------' was not found in the directory azurewebsites.net
这里奇怪的部分是目录名称是“azurewebsites.net”,而不是我正在使用的默认目录。
Update这是抛出错误的代码
public async Task<ActionResult> Login(string returnUrl)
{
try
{
// get the access token
AuthenticationContext authContext = new AuthenticationContext(authority, new TokenCache());
var clientCredential = new ClientCredential(clientId, password);
//Error on below line
AuthenticationResult result = await authContext.AcquireTokenAsync(resourceId, clientCredential);
// give it to the server to get a JWT
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
......