OpenId Connect:具有声明的身份验证请求(登录服务)

时间:2019-02-28 20:46:54

标签: c# authentication claims

我在我的项目asp.net(框架点网)中使用IdentityModel.OidcClient,版本= 2.9.0.0创建一个身份验证请求(HTTPS GET请求),所需的参数为:client_id,response_type,scope,redirect_uri。

经过不同的测试后,此方法有效:

            OidcClientOptions _options = new OidcClientOptions
        {
            Authority = _authority,
            Flow = OidcClientOptions.AuthenticationFlow.AuthorizationCode,
            ClientId = _clientId,
            ResponseMode = OidcClientOptions.AuthorizeResponseMode.Redirect,
            Scope = "openid profile email service:EPICURA_LOGIN phone address",
            RedirectUri = "https://localhost:44302/",
            FilterClaims = false,

            ProviderInformation = new ProviderInformation
            {
                IssuerName = _authority,
                AuthorizeEndpoint = _authorizationEndpoint,
                TokenEndpoint = _tokenEndpoint,
                KeySet = new IdentityModel.Jwk.JsonWebKeySet("{\"alg\":\"RS256\"}"),
                UserInfoEndpoint = "https://e2emerchant.itsme.be/oidc/userinfo"
            }
        };

        OidcClientOptions _options = EpiAuthorize.GenerateRequestAuthentication();
        OidcClient _client = new OidcClient(_options);
        var _state = await _client.PrepareLoginAsync();

        string jsonStr = JsonConvert.SerializeObject(_client, Formatting.Indented);

这项工作,但我没有要在OidcClientOptions中添加的Claims参数, 112/5000 我需要通过Claim参数获得其他信息:“标签:sixdots.be,2016-06:claim_eid”

是否可以通过RestClient发出“获取”请求?

我尝试过但没有成功:

*var client = new RestClient("https://e2emerchant.itsme.be/");
        var request = new RestRequest("oidc/authorization", Method.GET);

        request.AddHeader("Accept", "application/json");
        request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
        request.AddParameter("response_type", "code");
        request.AddParameter("scope", "openid profile email service: EPICURA_LOGIN");
        request.AddParameter("client_id", _clientId);
        request.AddParameter("redirect_uri", "https://localhost:44302/");
        request.AddBody("");

        // execute the request
        IRestResponse response = client.Execute(request);
        var content = response.Content;

您有一个解决方案可以为我提供服务,我坚持了1周,我看到了很多有关网络核心的示例,但我不使用它。

是否可以在“ OidcClientOptions”中添加Claims参数,或者可以通过“ OidcClientOptions”与上述源代码做相同的事情,而可以使用RestClient。

预先感谢

0 个答案:

没有答案