Я новичок в 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 (выше).
Буду признателен за любую помощь, или будет полезен фрагмент кода.