Вход в OpenID в настольном приложении C #? - PullRequest
0 голосов
/ 03 мая 2018

Я новичок в C #, меня попросили ввести логин OpenID с указанными именем пользователя и паролем и получить токен на предъявителя.

Мы достигли этого в Java-коде, как показано ниже (не знаю, как сделать то же самое в C #)

public AccessTokenResponse getToken() throws IOException, ParseException, Exception {

        StringBuilder query = new StringBuilder("");
        ClientCredentialsGrant clientAuth = new ClientCredentialsGrant();
        Map<String, String> parameters = clientAuth.toParameters();
        for (String key : parameters.keySet()) {
            query.append(key).append("=").append(parameters.get(key)).append("&");
        }

        ClientID clientID = new ClientID(config.getProperty(ConfigConstants.USERNAME));

        Secret secret = new Secret(config.getPassword());

        ClientSecretBasic csb = new ClientSecretBasic(clientID, secret);

        //logger.info("URL:" + this.getOpenIDMetadata(config.getProperty(ConfigConstants.DOMAIN)).getTokenEndpointURI().toString());

        TokenRequest tokenRequest = new TokenRequest(this.getOpenIDMetadata(config.getProperty(ConfigConstants.DOMAIN)).getTokenEndpointURI(), csb, clientAuth);
        HTTPRequest request = tokenRequest.toHTTPRequest();

        HTTPResponse httpResponse = request.send();

        accessToken = AccessTokenResponse.parse(httpResponse);

    return accessToken;
}

У нас есть сервер, который является поставщиком openid, и вот как получить OIDCProviderMetadata

private OIDCProviderMetadata getOpenIDMetadata(String domain) throws Exception {
    if (this.metadata == null) {
        String confURL = this.serverURL+ config.getIDP() + domain + "/authn/.well-known/openid-configuration";

        HTTPRequest configRequest = new HTTPRequest(HTTPRequest.Method.GET, new URL(confURL));
        HTTPResponse configResponse = configRequest.send();
        metadata = OIDCProviderMetadata.parse(configResponse.getContent());
    }
    return metadata;
}

Вопрос в том, как реализовать то же самое в C #?

Я провел некоторое исследование по этому поводу и обнаружил, что есть официальная реализация OpendID в C #, т.е. https://github.com/IdentityModel/IdentityModel.OidcClient2

но не нашел ни одного примера, который бы помог мне реализовать аналогично в реализации Java, которую я имею. Все примеры демонстрируют, что вход в openid в браузере или на мобильных устройствах мне не нужен, я хочу такую ​​же реализацию, как в Java (выше).

Буду признателен за любую помощь, или будет полезен фрагмент кода.

...