String stsUrl="https://[service namespace].accesscontrol.windows.net/WRAPv0.9/"; String rpUrl="[scope applies_to]"; String issuerKey="[issuer key]"; String issuerName="[issuer name]"; List<NameValuePair> claimSetSharedSecret = new ArrayList<NameValuePair>(); claimSetSharedSecret.add(new BasicNameValuePair("sample_in_claim_type","sample_in_claim_value")); String tokenSharedSecret=GetTokenBySharedSecret(stsUrl,claimSetSharedSecret,issuerName,issuerKey,rpUrl); System.out.println("Shared Secret: " + tokenSharedSecret); List<NameValuePair> claimSetSimpleWebToken = new ArrayList<NameValuePair>(); claimSetSimpleWebToken.add(new BasicNameValuePair("sample_in_claim_type","sample_in_claim_value")); String tokenSimpleWebToken=GetTokenBySimpleWebToken(stsUrl,claimSetSimpleWebToken,issuerName,issuerKey,rpUrl); System.out.println("Simple Web Token: " + tokenSimpleWebToken);
String[] returnClaimSet=stringResponse.split("&"); for(int i=0; i<returnClaimSet.length; i++) { String[] claimItem=returnClaimSet[i].split("="); if(claimItem[0].equals("wrap_token")) { return claimItem[1]; } } // this is an error case, but the body does contain the error details so useful to display return stringResponse;
String[] claimItem=returnClaimSet[i].split("="); if(claimItem[0].equals("wrap_token")) { return claimItem[1]; }
return claimItem[1];
// encode the claim set UrlEncodedFormEntity entity = new UrlEncodedFormEntity(claimSet, "UTF-8"); // make the request to the STS HttpPost httpPost = new HttpPost(stsUrl); httpPost.setEntity(entity); HttpClient client = new DefaultHttpClient(); HttpResponse response = client.execute(httpPost); // capture the response into a string HttpEntity responseEntity = response.getEntity(); String stringResponse = entity!=null ? EntityUtils.toString(responseEntity) : ""; return stringResponse;
claimSet.add(new BasicNameValuePair("wrap_name",issuerName)); claimSet.add(new BasicNameValuePair("wrap_password",issuerKey)); claimSet.add(new BasicNameValuePair("wrap_scope",rpUrl)); String stringResponse=MakeSTSRequest(claimSet,stsUrl); // extract the value for wrap_token and return return ExtractTokenFromResponse(stringResponse);
claimSet.add(new BasicNameValuePair("Issuer",issuerName)); claimSet.add(new BasicNameValuePair("Audience",stsUrl)); claimSet.add(new BasicNameValuePair("HMACSHA256",CreateSignature(EncodeQueryString(claimSet),issuerKey))); List<NameValuePair> newClaimSet = new ArrayList<NameValuePair>(); String wrapToken=EncodeQueryString(claimSet); newClaimSet.add(new BasicNameValuePair("wrap_assertion",wrapToken)); newClaimSet.add(new BasicNameValuePair("wrap_assertion_format","SWT")); newClaimSet.add(new BasicNameValuePair("wrap_scope",rpUrl)); String stringResponse=MakeSTSRequest(newClaimSet,stsUrl); // extract the value for wrap_token and return return ExtractTokenFromResponse(stringResponse);
SecretKeySpec signingKey = new SecretKeySpec(Base64.decodeBase64(key), HMAC_SHA256); Mac mac = Mac.getInstance(HMAC_SHA256);mac.init(signingKey);
byte[] rawHmac = mac.doFinal(hmacFreeClaimSet.getBytes("ASCII"));return Base64.encodeBase64String(rawHmac);
List<String> claims = new ArrayList<String>();for(Iterator<NameValuePair> i = claimSet.iterator(); i.hasNext();) { NameValuePair item = (NameValuePair)i.next();claims.add(item.getName() + "=" + URLEncoder.encode(item.getValue().trim(),"UTF-8")); } return StringUtils.join(claims,"&");
NameValuePair item = (NameValuePair)i.next();claims.add(item.getName() + "=" + URLEncoder.encode(item.getValue().trim(),"UTF-8"));