· 5 years ago · May 11, 2020, 07:14 AM
1
2
3using System;
4using System.Collections.Generic;
5using System.IO;
6using System.Linq;
7using System.Net;
8using System.Net.Http;
9using System.Web;
10using System.Text;
11using Toyota.Common.Web.Platform;
12using System.Web.Mvc;
13using System.IO;
14using IOT_PLANT3.Models;
15using System.Threading.Tasks;
16
17/*New Reference for Generate JWT*/
18using System.IdentityModel.Tokens.Jwt;
19using System.Security.Claims;
20using Microsoft.IdentityModel.Tokens;
21using Microsoft.Extensions.Configuration;
22using System.Net.Http.Headers;
23using Newtonsoft.Json;
24using Microsoft.WindowsAzure.Storage.Shared.Protocol;
25
26
27namespace IOT_PLANT3.Controllers
28{
29 public class LoginController : LoginPageController
30 {
31 //protected override void Startup()
32 //{
33 // //Set Title For Master RFID
34 // Settings.Title = "Login";
35 // //Set Base URL
36 // ViewBag.baseUrl = HttpContext.Request.Url.AbsoluteUri;
37
38 //}
39
40 public IConfiguration _config;
41 public string status;
42 public string messages;
43 public string token;
44
45 ResponseMessage message = new ResponseMessage();
46 public ActionResult GenerateToken()
47 {
48 //System.Diagnostics.Debug.WriteLine("CEKKKKKK");
49
50 token = GenerateJSONWebToken(Request.Form["username"], Request.Form["password"]);
51
52 /*Set Header Bearer*/
53 HttpClient client = new HttpClient();
54 client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(token);
55
56 message.result = true;
57 message.message = "Login Successfully";
58 message.token = token;
59
60 return Json(message);
61
62 }
63
64 private string GenerateJSONWebToken(string username, string password)
65 {
66 //var urlBuilder =
67 //new System.UriBuilder(Request.Url.AbsoluteUri)
68 //{
69 // //Path = Url.Content("~/path/to/anything"),
70 // Query = null,
71 //};
72 var url = Url.Content("~");
73 //Uri uri = urlBuilder.Uri;
74 //string url = urlBuilder.Host.ToString();
75
76 string secret_key = username + password;
77
78 var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret_key));
79 var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
80
81 var permClaims = new List<Claim>();
82 permClaims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()));
83 permClaims.Add(new Claim("username", username));
84 permClaims.Add(new Claim("password", password));
85 //permClaims.Add(new Claim("company", userInfo.COMPANY));
86 //permClaims.Add(new Claim("firstname", userInfo.FIRST_NAME));
87 //permClaims.Add(new Claim("lastname", userInfo.LAST_NAME));
88
89 var token = new JwtSecurityToken(url, //Issure
90 url, //Audience
91 permClaims,
92 expires: DateTime.Now.AddDays(1),
93 signingCredentials: credentials);
94 var jwt_token = new JwtSecurityTokenHandler().WriteToken(token);
95
96 return new JwtSecurityTokenHandler().WriteToken(token);
97 }
98 }
99}