public ActionResult UserInfo() { OAuth2Graph graph = new OAuth2Graph() { Id = "ALH0001", FirstName = "John", LastName = "Smith", FullName = "John M. Smith", Profile = "Profile of john smith", Email="*****@*****.**" }; //string issuer = SERVER_ADDRESS; //string audience = "NATURE"; //By decision, the signature will not be included //byte[] signature = AlhambraJwtTokenManager.GenerateSymmetricKeyForHmacSha256(); //string subject = "ALH0001"; //DateTime issuedAt = DateTime.UtcNow; //DateTime expires = DateTime.UtcNow.AddMinutes(2); //JWTSecurityToken jwt = AlhambraJwtTokenManager.GenerateJwtToken(issuer, subject, audience, expires); //string jwtReadyToBeSent = AlhambraJwtTokenManager.EncodeJWT(jwt); //string jwtDecoded = AlhambraJwtTokenManager.DecodeJWT(jwt); // bool isJwtValid = AlhambraJwtTokenManager.IsTokenValid(jwt, audience, issuer); // return Content(jwtDecoded.ToString() + "<br/><br/>" + jwtReadyToBeSent ); //DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(OAuth2Graph)); //MemoryStream stream1 = new MemoryStream(); string result = JsonConvert.SerializeObject(graph); //serializer.WriteObject(stream1, graph); return Content(result,"application/json"); }
public ActionResult UserInfo() { var authorizationRequest = Session["AuthorizationRequest"] as OpenIdConnectAuthorizationRequest; AlhambraOAuth2Authorization authorization = null; RegisteredUser registeredUser = null; if (HttpContext.Request.Headers["Authorization"].StartsWith("Bearer ", StringComparison.InvariantCultureIgnoreCase)) { string accessToken = ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(HttpContext.Request.Headers["Authorization"].Substring(7))); if (String.IsNullOrEmpty(accessToken)) { throw new HttpException((int)HttpStatusCode.Unauthorized, "The credentials are invalid"); } if (!(MvcApplication.registeredAuthorizations.Exists(x => x.AccessToken == accessToken))) { throw new HttpException((int)HttpStatusCode.Unauthorized, "The access token is invalid"); } else { authorization = MvcApplication.registeredAuthorizations.FirstOrDefault(x => x.AccessToken == accessToken); registeredUser= MvcApplication.registeredUsers.FirstOrDefault(x=>x.Email==authorization.UserId); } } else { throw new HttpException((int)HttpStatusCode.Unauthorized, "The authorization request only supports Bearer Token Usage"); } OAuth2Graph graph = new OAuth2Graph() { Id = registeredUser.Id }; //use the scopes if(authorizationRequest.scope.Contains(OpenIdConnectScopes.OpenId)){ foreach (string scope in authorizationRequest.scope.Split(' ')) { switch (scope) { case OpenIdConnectScopes.Profile: graph.FirstName = registeredUser.FirstName; graph.LastName = registeredUser.LastName; graph.FullName = registeredUser.FullName; graph.Profile = registeredUser.Profile; graph.Email = registeredUser.Email; break; case OpenIdConnectScopes.Email: graph.Email = registeredUser.Email; break; case OpenIdConnectScopes.FirstName: graph.FirstName = registeredUser.FirstName; break; case OpenIdConnectScopes.LastName: graph.FirstName = registeredUser.LastName; break; } } } else { throw new HttpException((int)HttpStatusCode.BadRequest, "The request is not valid"); } string result = JsonConvert.SerializeObject(graph); return Content(result, "application/json"); }