2017-11-03 3 views
1

問題:Identity Server 4 - Linuxでユーザークレームが空です

Linuxサーバーでは、ユーザー要求は認証からAPIに渡されません。 Startup.csでは、私は適切なエントリを提供している

[Authorize(Policy = "identity")] 
[Route("routes")] 
public class RoutesController : Controller 
{ 
    [HttpGet] 
    public IActionResult Get(string postId, string routeType) 
    { 
     // 
    } 

services.AddMvc(options => { 
    options.Filters.Add(new AuthorizeFilter("identity")); 
}); 
services.AddAuthorization(options => { 
    options.AddPolicy("identity", policy => 
    { 
     policy.Requirements.Add(new IdentityUserRequirement()); 
    }); 
}); 
services.AddSingleton<IAuthorizationHandler, IdentityUserHandler>(); 

そして、Windowsマシン上のすべてのものは、私は特別な権限属性でコントローラーを持って

(VS2017と使用してCMDの下で)正常に動作します/ Filtersディレクトリに適切なクラスを作成しました。

public class IdentityUserHandler : AuthorizationHandler<IdentityUserRequirement> 
{ 
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, IdentityUserRequirement requirement) 
    { 
     UserModel user = _userRepository.FindById(context.User.Claims.SingleOrDefault(x => x.Type == "userid")?.Value); 
     user.IMEI = context.User.Claims.SingleOrDefault(x => x.Type == "imei")?.Value; 
     _userRepository.UpdateUser(user); 

     context.Succeed(requirement); 
     return Task.FromResult(0); 
    } 
} 

郵便番号の使用私はAuthサービスを呼び出してaccess_tokenを取得してから、そのトークンを使用してRoutesController Getメソッドを呼び出しています。

Windows(VS2015の下でサービスを起動する、またはCMD経由でサービスを起動する)では、ルートを持つ通常のJSONが返されます。私は、エラー、次のLinux上でソリューションを展開してきました

が登場:

NullReferenceException: Object reference not set to an instance of an object. 

そしてラインに私のIdentityUserHandlerクラスメソッドHandleRequirementAsyncにrefferingされます。Linux的環境をデバッグする

user.IMEI = context.User.Claims.SingleOrDefault(x => x.Type == "imei")?.Value; 

限り私がマネージャー問題があるようです:

AuthorizationHandlerContext context 

パラメータメソッド内のHandleRequirementAsync

コレクションcontex.User.Claimsには要素がありません。 Windowsでは、Linuxにはありません。

誰でも知っていますか?

+0

どこにも同じ問題はありません。 Ubuntu 16.04 – eugeneK

答えて

0

私はいくつかのテストを作ったし、これは上、唯一の私の開発マシン上で作業しているように見える:

  • CentOSに
  • ウィンサーバー2K8
  • 勝利Severのの2k16

問題があります

関連する問題