public ActionResult Index() { var usr = this.HttpContext.User; var code = new OAuthCode(usr.Identity.Name); OAuthCodeCache.Add(code); var query = HttpUtility.UrlDecode(this.HttpContext.Request.QueryString.ToString()); var queryParts = query.Split('&'); var redirectUrl = ""; var newQuery = string.Format("code={0}", code.Code); foreach (var s in queryParts) { if (s.StartsWith("callbackUrl=", StringComparison.InvariantCultureIgnoreCase)) { redirectUrl = s.Replace("callbackUrl=", ""); } else { newQuery += string.Format("&{0}", s); } } if (string.IsNullOrEmpty(redirectUrl) == false) { return(Redirect(string.Format("{0}?{1}", redirectUrl, HttpUtility.UrlEncode(newQuery)))); } ViewBag.UserFIO = usr.Identity.Name; return(View()); }
public HttpResponseMessage Post(string id, OAuthClient cl) { //Uri scope = rst.Scope; Uri scope = new Uri("localhost:2500"); if (scope == null) { return(Request.CreateResponse <TokenResponse>(HttpStatusCode.BadRequest, new TokenResponse() { Error = OAuthError.INVALID_REQUEST })); } var c = OAuthCodeCache.Get(id); //return Request.CreateResponse(HttpStatusCode.OK, c); if (string.IsNullOrEmpty(c)) { return(Request.CreateResponse <TokenResponse>(HttpStatusCode.BadRequest, new TokenResponse() { Error = OAuthError.INVALID_REQUEST })); } string key = OAuthConfiguration.Configuration.StsSettings.SymmetricKey; TimeSpan lifeTime = new TimeSpan(0, 0, OAuthConfiguration.Configuration.StsSettings.TokenLifeTimeInSec); var claims = new List <Claim>(); //claims.Add(new Claim(ClaimTypes.Name, this.User.Identity.Name)); claims.Add(new Claim(ClaimTypes.Name, c)); claims.Add(new Claim(ClaimTypes.Role, "AssetsServiceUser")); claims.Add(new Claim(ClaimTypes.Role, "Developer")); claims.Add(new Claim(ClaimTypes.Role, "Administrator")); SimpleWebToken token = new SimpleWebToken(scope, OAuthConfiguration.Configuration.StsSettings.IssuerUri.ToString(), DateTime.UtcNow + lifeTime, claims, key); var tokenResponse = new TokenResponse() { AccessToken = token.ToString(), TokenType = "bearer", ExpiresIn = 600 }; return(Request.CreateResponse <TokenResponse>(HttpStatusCode.OK, tokenResponse)); }