【发布时间】:2016-08-24 09:57:11
【问题描述】:
我试图在整个互联网上寻找,但看不到如何实现我被要求的目标。这是我的企业应用程序,它使用 Asp.net Identity 进行基于表单的身份验证。我已经扩展了用户和角色以及组以在我的代码中提供授权。 (注意:不使用任何组/角色指令)。
现在我被要求研究更改代码以适应 Azure Active Directory 身份验证的可能性。我尝试阅读如何注册应用程序、将用户发送到 Azure 站点进行身份验证、取回令牌等。但是我被困在“之后怎么办?”我已经通过身份验证的用户如何使用我现有的 Asp.net Identity 模型,其中用户存储在 sql 数据库中。如何使用此令牌关联现有用户。
此外,当我将项目更改为允许 Azure AD 时,它会删除 Aspnet.Identity 包,因为它与 Azure AD 不兼容!!
我什至尝试手动将两个包并排放置,我必须指出用户被发送到 Azure 上进行身份验证的位置,然后转到主页并再次以永无止境的循环登录 Azure AD。
总结问题,我如何从 AAD 验证用户并继续使用现有的角色和组授权。
编辑: 我尝试创建单独的 Web 服务来验证用户并发送 JWT 令牌。如果我直接在浏览器上调用它可以找到,但是,当我尝试从我的网络应用程序调用此服务时,我得到了奇怪的错误
Application with identifier 'a2d2---------------' was not found in the directory azurewebsites.net
这里的奇怪部分是目录名称是“azurewebsites.net”,而不是我使用的默认目录。
更新 这是引发错误的代码
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);
......
【问题讨论】:
标签: c# asp.net-mvc authentication azure-active-directory