[UPDATE 2/11: Updated to use new STS V0.9 instead of V0.8]
In the previous posts I demonstrated requesting tokens from the Access Control Service using both Simple Web Token and Shared Secret requests in Java and in PHP. In this little example I am only showing the Shared Secret request in Python.
import sys, httplib, urllib
def MakeSTSRequest(claimSet,stsUrl): headers = {"Content-type":"application/x-www-form-urlencoded"} conn = httplib.HTTPSConnection(stsUri) conn.request("POST","/WRAPv0.9/",claimSet,headers) response = conn.getresponse() data = response.read() conn.close() return data
def GetTokenBySharedSecret(stsUrl,claimSet,issuerName,issuerKey,rpURL): claimSet = urllib.urlencode({"wrap_scope":rpUri, "wrap_name":issuerName, "wrap_password":issuerKey}) responseString=MakeSTSRequest(claimSet,stsUrl) return ExtractTokenFromResponse(responseString)
def ExtractTokenFromResponse(stringResponse): claims=stringResponse.split("&") for claim in claims: keyValue=claim.split("=") if(keyValue[0]=="wrap_token"): return keyValue[1] return stringResponse
stsUri="[service namespace].accesscontrol.windows.net"rpUri="[scope applies_to]"issuerName="[issuer name]"issuerKey="[issuer key]"
claimSet={"sample_claim_type":"sample_claim_value"}print GetTokenBySharedSecret(stsUri,claimSet,issuerName,issuerKey,rpUri)