新文章 网摘 文章 随笔 日记

IdentityServer4使用access_token获取用户信息

                        //获取accessToken
                        var bearer = httpContext.Request.Headers["Authorization"];

                        if (!string.IsNullOrWhiteSpace(bearer))
                        {
                            var accessToken = bearer.ToString().Replace("Bearer ", "");

                            //获取用户信息
                            var client = new HttpClient();
                            var metaDataResponse = await client.GetDiscoveryDocumentAsync("https://localhost:44310/");
                            var response = await client.GetUserInfoAsync(new UserInfoRequest
                            {
                                Address = metaDataResponse.UserInfoEndpoint,
                                Token = accessToken
                            });
                            if (response.IsError)
                            {
                                throw new Exception("Problem while fetching data from the UserInfo endpoint", response.Exception);
                            }
                            var subClaim = response.Claims.FirstOrDefault(c => c.Type.Equals("sub"));
                            user.AddIdentity(new ClaimsIdentity(new List<Claim> { new Claim(subClaim.Type.ToString(), subClaim.Value.ToString()) }));
                        }

 

posted @ 2022-10-24 15:23  岭南春  阅读(185)  评论(0)    收藏  举报