900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Java 利用http协议与Domino实现sso单点登录

Java 利用http协议与Domino实现sso单点登录

时间:2024-01-31 06:34:35

相关推荐

Java 利用http协议与Domino实现sso单点登录

根据链接: /link?url=Uxufo9mo_8T7myXTaNz8QnUniJO-CHKZpvY-afqFI51WTX7MCzsNkD2nkvBglBupvpkzFrm2Mv2RP4y3AUFnitv3-K-0AQkw3xL7etdUpvO

实测可行,具体如下

Java 代码:

// 单点登录测试

@RequestMapping(value = "sso")

public String sso(HttpServletRequest request, HttpServletResponse response) throws IOException {

String userName = request.getParameter("username");

String password = request.getParameter("password");

String loginURL = null;

String hostName = ;

URL url = new URL(hostName + "/names.nsf?Login");

HttpURLConnection.setFollowRedirects(false);

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setDoOutput(true);

OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream());

wr.write("username=" + userName + "&password=" + password);

wr.flush();

wr.close();

urlConnection.connect();

Map<String, List<String>> headerFields = urlConnection.getHeaderFields();

for (Iterator<String> it = headerFields.keySet().iterator(); it.hasNext();) {

String key = it.next();

if (key != null && key.equals("Set-Cookie")) {

String value = urlConnection.getHeaderField(key);

String[] cookies = value.split(";\\s*");

for (int i = 0; i < cookies.length; i++) {

String[] cookie = cookies[i].trim().split("=");

if (cookie[0].equals("DomAuthSessId")) {

loginURL = hostName + "/domcfg.nsf/SSOLoginAction?OpenAgent";

loginURL += "&cookeName=DomAuthSessId";

loginURL += "&cookeValue=" + cookie[1];

loginURL += "&redirectTo=" + hostName + "/test.nsf/test?openform&count=10&start=1";

break;

}

}

}

}

urlConnection.disconnect();

return "redirect:" + loginURL;

}

Domino代码:

在domcfg中增加代理SSOLoginAction

Dim session As New NotesSession

Dim db As NotesDatabase

Dim doc As NotesDocument

Dim cookieName As String

Dim cookieValue As String

Dim redirectTo As string

Set db = session.currentdatabase

Set doc = session.DocumentContext

cookieName = getParameter(doc.Query_String_Decoded(0),"cookeName")

cookieValue = getParameter(doc.Query_String_Decoded(0),"cookeValue")

redirectTo = getParameter(doc.Query_String_Decoded(0),"redirectTo")

Print {P3P: CP="NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM CNT PRE LOC"}'针对ie的第3方cookie写入限制

Print {Set-Cookie:} + cookieName$ + {=} + cookieValue$ + {; path=/}

Print {Location: } + redirectTo$ + {}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。