Каков наилучший способ получить доступ к защищенному веб-сервису с помощью токена JWT bearer с веб-сайта, если оба они работают на разных серверах
Привет,
каков наилучший способ получить доступ к защищенному веб-сервису с помощью токена JWT Bearer с веб-сайта, если оба они работают на разных серверах ?
Что я уже пробовал:
Hi, i`m new in Web programming. I just create a Webservice and it worked as well with JWT Bearer Token. Now i set up a Asp.Net Core Website which use an own Identity Authentication. At the moment i realize the Token in Webservice as follow: <pre lang="c#">public IActionResult Login(string username, string pass) { UserModel login = new UserModel(); login.UserName = username; login.Password = pass; IActionResult response = Unauthorized(); var user = AuthenticateUser(login); if(user != null) { var tokenStr = GenerateJSONWebToken(user); response = Ok(new { token = tokenStr }); } return response; }
а это и есть создание токена:
private string GenerateJSONWebToken(UserModel userinfo) { var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"])); var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256); var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub,userinfo.UserName), new Claim(JwtRegisteredClaimNames.Email,userinfo.EmailAddress), new Claim(JwtRegisteredClaimNames.Jti,Guid.NewGuid().ToString()) }; var token = new JwtSecurityToken( issuer: _config["Jwt:Issuer"], audience: _config["Jwt:Issuer"], claims, expires: DateTime.Now.AddMinutes(120), signingCredentials: credentials); var encodetoken = new JwtSecurityTokenHandler().WriteToken(token); return encodetoken; }
Теперь я жестко закодировал имя пользователя и пароль для токена в Website Startup.cs следующим образом:
var client = new RestClient(Startup.URLWebservice); var request = new RestRequest("api/Login?username=test&pass=123", Method.GET); var deserial = new JsonDeserializer(); var response = client.Execute(request); Token = deserial.Deserialize<Dictionary<string, string>>(response);
Каков наилучший шаблон, чтобы сделать этот сценарий безопасным ? Во - первых, я думаю, что там не должно быть жестко закодированных имени пользователя и пароля ? Лучшим способом может быть то, что веб - сервис отправляет токен только аутентифицированному пользователю с веб-сайта-но как я могу этого добиться ?
Надеюсь, кто-нибудь сможет мне помочь !?