使用单个用户帐户的Azure移动服务.net后端身份验证

时间:2016-10-21 08:53:12

标签: c# asp.net authentication azure-mobile-services

我有一个使用个人用户帐户的现有ASP.net Web API。

我用它来注册/更改密码/登录等。 当我登录时,我收到一个令牌,然后使用令牌访问[授权]控制器。

即。
[授权]     public class ValuesController:ApiController

我已将Azure移动应用程序的TODO .net后端中的Controllers,DataObjects,Startup.MobileApp和AppNameApiContext添加到我当前的API中。

即  public class TodoController:TableController

这适用于同步/插入等。但如果我将[授权]添加到控制器,它将始终返回未授权,即使我发送与其他API端点使用的相同令牌。

我可以使用“Azure移动应用程序的自定义身份验证”找到的所有示例 使用Microsoft.Azure.Mobile.Server.Authentication。

如何使用相同的登录/令牌为两者提供身份验证(ValuesController:ApiController) 和 (TodoController:TableController)

非常感谢期待

我正在尝试找到像

这样的解决方案
app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions
            {
                SigningKey = signingKey,
                ValidAudiences = new[] { hostName },
                ValidIssuers = new[] { hostName },
                TokenHandler = new MyClass (config)
            });


public class MyClass : AppServiceTokenHandler
{
  public override bool TryValidateLoginToken
  (string token,
   string signingKey,
   IEnumerable<string> validAudiences,
   IEnumerable<string> validIssuers,
   out ClaimsPrincipal claimsPrincipal)

  {
     if (CheckIfUserIsAuth(token))
     {
       return true;
     }

     // Or something like 
     // if(token== CurrentUserToker)
     //  { return true};
  }
}

但是,我仍然会收到未经授权的,不管我是否回复了。

1 个答案:

答案 0 :(得分:0)

不幸的是,你从错误的角度出发。您需要从Azure移动应用程序开始。这具有使用EasyAuth从移动设备进行身份验证的必要逻辑。我建议从教程开始 - 它有一个前端和你选择的后端。然后,您可以根据需要进行扩展。