Auth2.0 java方式实现代码

在对接的时候用到了Auth2.0,对方用的C#写的项目并给我发了如下的demo:

官网:https://getkong.org/plugins/oauth2-authentication/


会linux的应该能看懂,直接在linux里执行却不通,后来在¥ curl 后加  "-k"之后就访问通了,原来是因为他用的HTTPS,需要认证,但是没有证书,所以要加上忽略

服务器认证证书,在linux中也就是-K  忽略证书。加上之后linux果然访问通了,但是我的项目是用java写的呀,他也没有java的demo,最后终于让我搞出一个

代码见下:


运行这个方法会返回code 和 token,当然此方法调用了封装的类,

上一个方法调用的封装类如下

public class OKHttpUtilForSelfSSL {
private static final String GET = "get";
private static final String POST = "post";
private static final String PUT = "put";
private static final String DELETE = "delete";
private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");


private static final OKHttpUtilForSelfSSL okhttpUtil = new OKHttpUtilForSelfSSL();
private static OkHttpClient client;


private OKHttpUtilForSelfSSL() {
final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)
throws CertificateException {
}


@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)
throws CertificateException {
}


@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
X509Certificate[] x509Certificates = new X509Certificate[0];
return x509Certificates;
}
} };


SSLContext sslContext;
try {
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
client = new OkHttpClient();
client.setSslSocketFactory(sslContext.getSocketFactory());
client.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}


public static final OKHttpUtilForSelfSSL Builder() {
return okhttpUtil;
}


public Object get(String url) throws Exception {
return get(url, null);
}


public Object get(String url, Map<String, String> headers) throws Exception {
return responseBody(url, GET, null, headers);
}


public String getAndReturnJson(String url) throws Exception {
return getAndReturnJson(url, new HashMap<String, String>());
}


public String getAndReturnJson(String url, Map<String, String> headers) throws Exception {
Object obj = responseBody(url, GET, null, headers);
return obj == null ? null : JacksonUtil.Builder().obj2Json(obj);
}


public Object post(String url, String json) throws Exception {
return post(url, json, new HashMap<String, String>());
}


public Object post(String url, String json, Map<String, String> headers) throws Exception {
return responseBody(url, POST, json, headers);
}


public String postAndReturnJson(String url, String json) throws Exception {
return postAndReturnJson(url, json, new HashMap<String, String>());
}


public String postAndReturnJson(String url, String json, Map<String, String> headers) throws Exception {
Object obj = responseBody(url, POST, json, headers);
return obj == null ? null : JacksonUtil.Builder().obj2Json(obj);
}


private Object responseBody(String url, String type, String json, Map<String, String> headers) throws Exception {
Builder builder = new Request.Builder().url(url);
Set<Entry<String, String>> set = headers.entrySet();
Iterator<Entry<String, String>> iter = set.iterator();
Entry<String, String> entry = null;
while (iter.hasNext()) {
entry = iter.next();
builder.addHeader(entry.getKey(), entry.getValue());
System.out.println(builder);
}


RequestBody body = null;
Request request = null;
Response response = null;
Object value = null;
if (json != null) {
body = RequestBody.create(JSON, json);
}


switch (type) {
case GET:
request = builder.build();
break;
case POST:
request = builder.post(body).build();
break;
case PUT:
request = builder.put(body).build();
break;
case DELETE:
if (body == null) {
request = builder.delete().build();
} else {
request = builder.delete(body).build();
}
break;
default:
break;
}


response = client.newCall(request).execute();
if (response.isSuccessful()) {
value = response.body().string();
} else {
throw new RuntimeException("状态码:" + response.code() + ", message:" + response.message());
}


return value;
}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个使用Java语言实现SAML 2.0 IdP参数配置的示例代码: ```java import com.onelogin.saml2.Auth; import com.onelogin.saml2.settings.Saml2Settings; import com.onelogin.saml2.settings.Saml2SettingsBuilder; public class SamlIdpConfig { public static void main(String[] args) { // 创建SAML 2.0 IdP设置 Saml2Settings settings = new Saml2SettingsBuilder() .setEntityId("https://idp.example.com/metadata") .setSingleSignOnServiceUrl("https://idp.example.com/sso") .setSingleLogoutServiceUrl("https://idp.example.com/slo") .setCertFingerprint("AB:CD:EF:01:23:45:67:89:0A:BC:DE:FG:HI:JK:LM:NO:PQ:RS:TU:VW") .setPrivateKey("-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCzHLvO6Xe1XOc4\nPd6y/6pKq1d8zDfHw5hWz9sJv0hLl9rQ5C91yAzHt8t6e7Qp8Ht/9IbVcNk9Q6p2\n+Qn5Ua9TbHJ86jKZm5uFkX3IbM3Xv7A3xGQzX3Cq0bKU5xJ9tO/U8z3L2J7TcZqJ\nHc3qkhjQrXtB7Cpo2Oq6bP2j5pGf8+0pWN3P+P4GldY/7B7L6u5zZQvW5+I5fDg7\nL3jwTo4h6oM7zE7QfTqS1Bv2yqPb+JLQmHxZU6nM4uOo6taHryN9c7lXq9hSMw6g\nfJz4kW14SgE8Fhj37fZq/8zSjzi3k6z9X2OyLs/OFzPK0Bnf8z7nM8m1fXuQlLZz\nXNSe6N97AgMBAAECggEBAK5fJ0iJ4iHs3mLjxU2eQ1J5Z2rJQSKa9W4lqTf1GmzW\nVLTn8v2r7nZ+q/8I8w3T1YcJfRQl3Zi3Fp7XcZgB5AyR5nLW2PQZcX5jQ5x6T9j6\nKUHf3d8WQK0dGqY7Gx0NoJq1hLQtb7TJ1V8fKZD/7tHx7M4Uc+0zUkZ5G14LhXk9\nqUZU8pTcNqkIjVgBZBcXn4lq2PSJ5wvcqX1x6W8SMslR6JQdA+rh7R2dZ4vJyJVT\nJX0YRXZ+L9wL6DvG4TQ6dXjFm3mNlrQ4kZC5NvK5kK6X5X8jw2t0uSLD4ktQrDvB\n8H3Lj4uN3vV6n2dKfH4H9nnOzOY5sXp9pJN/fd8XhUECgYEA1z8fZ3WpvKKaHfCg\n5Lg5IiVJW8qWjGJZuz0U78cI2N7ZvQnYp1yLl8G7JxZ6Iv0+g5jG4bmbU2c8Zf8/\n6JLj0MjU8hK7J5jX8IxYKs+7yRYZ9kq+tnQw3sLXgG4ZkXJr1YF3X9jQ2CfXzWEI\nPc3w3oK4vJwNk1qYx/Z9y4Wj5OUCgYEAwv8+8fJgVZvWJ7rCw9nX7t+D1oFjJb6i\n6cL6hZKm8I7Rr5dOkwFcx6KlZP8M5pGjLtxZ9H+6LZDxKp8TKg2nVvV1j96sV/Lq\nkIg5WmTb4xJbTdyY3ZKfL0l5n5l1ZqIbZT8sM7Ihxj0eW8VcKXW+j6wz6wUCgYEA\nj4fW5DVt8NfBQKtYj0YXQFwKjG2v6cX9fFvZ3J3eZxnL+qTJ3N1Kl3q1ZzGy5ZZK\nRl6xc3LgR3eYJwvto9l6YK8bqkL0X9gKs9rk9L8A1PnMqU5zC9zg/4sQFJi7oA4g\nvVOrXJy/5JgU6JNUFNWV/4C0T0VHqjxPnBqM1VvaywECgYBfK2K5tqVl9iE6k9QD\nQyZqNYZ6c2J4+8MHc+OnzQhLzY8g3cBb6zJQw+IjXfKZlD5fLx2jkw7L/AyL5MzL\n4bJxZhFhHqZC+KpJz3Xq5E6mMzJcT7W03DvWpS6IXcJhGmH6J+eDhZquyLzV3sBR\nnC+tYlX1jgj2u6YgN+3v+6k/uQ==\n-----END PRIVATE KEY-----") .build(); // 创建SAML 2.0 IdP认证类 Auth auth = new Auth(settings); // 在此添加其他SAML 2.0 IdP配置代码 // ... // 使用SAML 2.0 IdP认证类进行认证 // ... } } ``` 注意:这里使用了Onelogin的SAML 2.0 Java工具包,如果您使用其他工具包,请根据具体的使用方式进行参数配置。同时,您还需要替换示例代码中的实际参数值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值