2017-08-11 21 views
5

ASP.NET Core 2.0のHttpContextからAuthenticationInfoプロパティを取得するにはどうすればよいですか。私は、ASP.NET Core 2.0のセキュリティの再設計で、AuthenticationManagerは現在廃止されており、.Authenticationを削除する必要があることを理解しています。私は1.1.2ASP.NET Core 2.0でAuthenticationInfoを取得

var info = await httpContext.Authentication.GetAuthenticateInfoAsync("Automatic"); 
info.Properties.StoreTokens(new List<AuthenticationToken> 
{ 
    new AuthenticationToken 
    { 
     Name = OpenIdConnectParameterNames.AccessToken, 
     Value = accessToken 
    }, 
    new AuthenticationToken 
    { 
     Name = OpenIdConnectParameterNames.RefreshToken, 
     Value = refreshToken 
    } 
}); 

await httpContext.Authentication.SignInAsync("Automatic", info.Principal, info.Properties); 

答えて

13

AuthenticationManager.GetAuthenticateInfoAsync(string)にこのような何かをするために使用さ

は2.0でIAuthenticationService.AuthenticateAsync(string)に置き換えられました。それが今AuthenticateResultを返しますが、それはまったく同じように動作します。

あなたのスニペットを更新することができた:

var result = await httpContext.AuthenticateAsync(); 
result.Properties.StoreTokens(new List<AuthenticationToken> 
{ 
    new AuthenticationToken 
    { 
     Name = OpenIdConnectParameterNames.AccessToken, 
     Value = accessToken 
    }, 
    new AuthenticationToken 
    { 
     Name = OpenIdConnectParameterNames.RefreshToken, 
     Value = refreshToken 
    } 
}); 

await httpContext.SignInAsync(result.Principal, result.Properties); 
+1

注「自動」はもはや重要な言葉ではありません。 '.AuthenticateAsync(); 'を呼び出してください。 – Tratcher

+0

@Tratcher素敵なキャッチ、ありがとう。私は[スキーム]で自動を置き換える私の答えを編集したと確信していたが、私は私の編集を保存するのを忘れたように見えます。つまり、認証とサインインの両方にデフォルトのスキームを使用するほうが簡単かもしれないので、それに応じて私の回答を更新しました。 – Pinpoint

関連する問題