示例#1
0
        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());
        }
示例#2
0
        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));
        }