<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Maciej ("Ski") Skierkowski's Blog</title><link>http://blogs.msdn.com/sskier/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Requesting a Token from Access Control Service in Python</title><link>http://blogs.msdn.com/sskier/archive/2009/11/10/requesting-a-token-from-access-control-service-in-python.aspx</link><pubDate>Tue, 10 Nov 2009 00:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9919905</guid><dc:creator>sskier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sskier/comments/9919905.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sskier/commentrss.aspx?PostID=9919905</wfw:commentRss><description>&lt;P&gt;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.&lt;/P&gt;
&lt;P&gt;import sys, httplib, urllib&lt;/P&gt;
&lt;P&gt;def MakeSTSRequest(claimSet,stsUrl):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; headers = {"Content-type":"application/x-www-form-urlencoded"}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn = httplib.HTTPSConnection(stsUri)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.request("POST","/WRAPv0.8/",claimSet,headers)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; response = conn.getresponse()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data = response.read()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.close()&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return data&lt;/P&gt;
&lt;P&gt;def GetTokenBySharedSecret(stsUrl,claimSet,issuerName,issuerKey,rpURL):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; claimSet = urllib.urlencode({"applies_to":rpUri,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "wrap_name":issuerName,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "wrap_password":issuerKey})&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; responseString=MakeSTSRequest(claimSet,stsUrl)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ExtractTokenFromResponse(responseString)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;def ExtractTokenFromResponse(stringResponse):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; claims=stringResponse.split("&amp;amp;")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for claim in claims:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; keyValue=claim.split("=")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(keyValue[0]=="wrap_token"):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return keyValue[1]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return stringResponse&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;stsUri="[service namespace].accesscontrol.windows.net"&lt;BR&gt;rpUri="[scope applies_to]"&lt;BR&gt;issuerName="[issuer name]"&lt;BR&gt;issuerKey="[issuer key]"&lt;/P&gt;
&lt;P&gt;claimSet={"sample_claim_type":"sample_claim_value"}&lt;BR&gt;print GetTokenBySharedSecret(stsUri,claimSet,issuerName,issuerKey,rpUri)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919905" width="1" height="1"&gt;</description></item><item><title>Requesting a Token from Access Control Service in Java</title><link>http://blogs.msdn.com/sskier/archive/2009/11/06/requesting-a-token-from-access-control-service-in-java.aspx</link><pubDate>Fri, 06 Nov 2009 05:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918391</guid><dc:creator>sskier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sskier/comments/9918391.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sskier/commentrss.aspx?PostID=9918391</wfw:commentRss><description>&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: Tahoma, Arial, Helvetica, sans-serif" class=Apple-style-span&gt;Following demonstrates requesting a token from the .NET Services Access Control Services using a Shared Secret and another using a Simple Web Token.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;You'll also need these three libraries to help in the encoding process and the HTTP calls. There are some hacky pieces of code here, but that's mostly due to my ignorance in Java. Feedback to make this better quality code is welcome.&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="http://commons.apache.org/codec/" mce_href="http://commons.apache.org/codec/"&gt;http://commons.apache.org/codec/&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="http://commons.apache.org/lang/" mce_href="http://commons.apache.org/lang/"&gt;http://commons.apache.org/lang/&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="http://hc.apache.org/" mce_href="http://hc.apache.org/"&gt;http://hc.apache.org/&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;import java.io.IOException;&lt;/DIV&gt;
&lt;DIV&gt;import java.io.UnsupportedEncodingException;&lt;/DIV&gt;
&lt;DIV&gt;import java.security.InvalidKeyException;&lt;/DIV&gt;
&lt;DIV&gt;import java.security.NoSuchAlgorithmException;&lt;/DIV&gt;
&lt;DIV&gt;import java.util.ArrayList;&lt;/DIV&gt;
&lt;DIV&gt;import java.util.Iterator;&lt;/DIV&gt;
&lt;DIV&gt;import java.util.List;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;import javax.crypto.Mac;&lt;/DIV&gt;
&lt;DIV&gt;import javax.crypto.spec.SecretKeySpec;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.commons.codec.binary.Base64;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.commons.lang.StringUtils;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.HttpEntity;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.HttpResponse;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.NameValuePair;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.client.ClientProtocolException;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.client.HttpClient;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.client.entity.UrlEncodedFormEntity;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.client.methods.HttpPost;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.impl.client.DefaultHttpClient;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.message.BasicNameValuePair;&lt;/DIV&gt;
&lt;DIV&gt;import org.apache.http.util.EntityUtils;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;public class RequestACSToken {&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;private static final String HMAC_SHA256 = "HmacSHA256";&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;public static void main(String[] args) throws ClientProtocolException, NoSuchAlgorithmException, IllegalStateException, IOException, Exception&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String stsUrl="https://[service namespace].accesscontrol.windows.net/WRAPv0.8/";&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String rpUrl="[scope applies_to]";&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String issuerKey="[issuer key]";&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String issuerName="[issuer name]";&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;List&amp;lt;NameValuePair&amp;gt; claimSetSharedSecret = new ArrayList&amp;lt;NameValuePair&amp;gt;();&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;claimSetSharedSecret.add(new BasicNameValuePair("sample_in_claim_type","sample_in_claim_value"));&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String tokenSharedSecret=GetTokenBySharedSecret(stsUrl,claimSetSharedSecret,issuerName,issuerKey,rpUrl);&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;System.out.println("Shared Secret: " + tokenSharedSecret);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;List&amp;lt;NameValuePair&amp;gt; claimSetSimpleWebToken = new ArrayList&amp;lt;NameValuePair&amp;gt;();&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;claimSetSimpleWebToken.add(new BasicNameValuePair("sample_in_claim_type","sample_in_claim_value"));&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String tokenSimpleWebToken=GetTokenBySimpleWebToken(stsUrl,claimSetSimpleWebToken,issuerName,issuerKey,rpUrl);&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;System.out.println("Simple Web Token: " + tokenSimpleWebToken);&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;public static String ExtractTokenFromResponse(String stringResponse)&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String[] returnClaimSet=stringResponse.split("&amp;amp;");&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;for(int i=0; i&amp;lt;returnClaimSet.length; i++)&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String[] claimItem=returnClaimSet[i].split("=");&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;if(claimItem[0].equals("wrap_token"))&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;return claimItem[1];&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;}&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;// this is an error case, but the body does contain the error details so useful to display&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;return stringResponse;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;public static String MakeSTSRequest(List&amp;lt;NameValuePair&amp;gt; claimSet, String stsUrl) throws ClientProtocolException, IOException&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;// encode the claim set&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;UrlEncodedFormEntity entity = new UrlEncodedFormEntity(claimSet, "UTF-8");&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;// make the request to the STS&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;HttpPost httpPost = new HttpPost(stsUrl);&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;httpPost.setEntity(entity);&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;HttpClient client = new DefaultHttpClient();&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;HttpResponse response = client.execute(httpPost);&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;// capture the response into a string&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;HttpEntity responseEntity = response.getEntity();&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String stringResponse = entity!=null ? EntityUtils.toString(responseEntity) : "";&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;return stringResponse;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;public static String GetTokenBySharedSecret(String stsUrl, List&amp;lt;NameValuePair&amp;gt; claimSet, String issuerName, String issuerKey, String rpUrl) throws ClientProtocolException, IOException&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;claimSet.add(new BasicNameValuePair("wrap_name",issuerName));&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;claimSet.add(new BasicNameValuePair("wrap_password",issuerKey));&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;claimSet.add(new BasicNameValuePair("applies_to",rpUrl));&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String stringResponse=MakeSTSRequest(claimSet,stsUrl);&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;// extract the value for wrap_token and return&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;return ExtractTokenFromResponse(stringResponse);&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;public static String GetTokenBySimpleWebToken(String stsUrl, List&amp;lt;NameValuePair&amp;gt; claimSet, String issuerName, String issuerKey, String rpUrl) throws ClientProtocolException, IOException, Exception, NoSuchAlgorithmException, IllegalStateException&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;claimSet.add(new BasicNameValuePair("Issuer",issuerName));&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;claimSet.add(new BasicNameValuePair("Audience",stsUrl));&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;claimSet.add(new BasicNameValuePair("HMACSHA256",CreateSignature(EncodeQueryString(claimSet),issuerKey)));&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;List&amp;lt;NameValuePair&amp;gt; newClaimSet = new ArrayList&amp;lt;NameValuePair&amp;gt;();&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String wrapToken=EncodeQueryString(claimSet);&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;newClaimSet.add(new BasicNameValuePair("wrap_SWT",wrapToken));&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;newClaimSet.add(new BasicNameValuePair("applies_to",rpUrl));&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;String stringResponse=MakeSTSRequest(newClaimSet,stsUrl);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;// extract the value for wrap_token and return&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;return ExtractTokenFromResponse(stringResponse);&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="WHITE-SPACE: pre" class=Apple-tab-span&gt;&lt;/SPAN&gt;&amp;nbsp;public static String CreateSignature(String hmacFreeClaimSet, String key) throws NoSuchAlgorithmException, InvalidKeyException, IllegalStateException, UnsupportedEncodingException&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;SecretKeySpec signingKey = new SecretKeySpec(Base64.decodeBase64(key), HMAC_SHA256);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;Mac mac = Mac.getInstance(HMAC_SHA256);&lt;BR&gt;mac.init(signingKey);&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;byte[] rawHmac = mac.doFinal(hmacFreeClaimSet.getBytes("ASCII"));&lt;BR&gt;return Base64.encodeBase64String(rawHmac);&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;public static String EncodeQueryString(List&amp;lt;NameValuePair&amp;gt; claimSet) throws UnsupportedEncodingException&lt;BR&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;List&amp;lt;String&amp;gt; claims = new ArrayList&amp;lt;String&amp;gt;();&lt;BR&gt;for(Iterator&amp;lt;NameValuePair&amp;gt; i = claimSet.iterator(); i.hasNext();)&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;NameValuePair item = (NameValuePair)i.next();&lt;BR&gt;claims.add(item.getName() + "=" + URLEncoder.encode(item.getValue().trim(),"UTF-8"));&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;return StringUtils.join(claims,"&amp;amp;");&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918391" width="1" height="1"&gt;</description></item><item><title>Requesting a Token from Access Control Service in PHP</title><link>http://blogs.msdn.com/sskier/archive/2009/11/06/requesting-a-token-from-access-control-service-in-php.aspx</link><pubDate>Fri, 06 Nov 2009 05:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918386</guid><dc:creator>sskier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sskier/comments/9918386.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sskier/commentrss.aspx?PostID=9918386</wfw:commentRss><description>&lt;div&gt;Following demonstrates requesting a token from the .NET Services Access Control Services using a Shared Secret and another using a Simple Web Token.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;lt;?php&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;$stsUrl="https://[service namespace].accesscontrol.windows.net/WRAPv0.8/";&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;$rpUrl="[scope applies_to]";&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;$issuerKey="[issuer key]";&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;$issuerName="[issuer name]";&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;$claims = array("sample_in_claim_type"=&amp;gt;"sample_in_claim_value");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;echo("&amp;lt;b&amp;gt;Shared Secret&amp;lt;/b&amp;gt;: " . GetTokenBySharedSecret($stsUrl,$claims,$issuerName,$issuerKey,$rpUrl) . "&amp;lt;br/&amp;gt;");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;echo("&amp;lt;b&amp;gt;Simple Web Token&amp;lt;/b&amp;gt;: " . GetTokenBySimpleWebToken($stsUrl,$claims,$issuerName,$issuerKey,$rpUrl) . "&amp;lt;br/&amp;gt;");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;function GetTokenBySharedSecret($stsUrl, $claimSet, $issuerName, $issuerKey, $rpUrl)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$claimSet["wrap_name"]=$issuerName;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$claimSet["wrap_password"]=$issuerKey;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$claimSet["applies_to"]=$rpUrl;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$stringResponse = MakeSTSRequest($claimSet,$stsUrl);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;return ExtractTokenFromResponse($stringResponse);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;function GetTokenBySimpleWebToken($stsUrl, $claimSet, $issuerName, $issuerKey, $rpUrl)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$claimSet["Issuer"]=$issuerName;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$claimSet["Audience"]=$stsUrl;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$claimSet["HMACSHA256"]=CreateSignature($claimSet,$issuerKey);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$requestSet=array();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$requestSet["wrap_SWT"]=http_build_query($claimSet);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$requestSet["applies_to"]=$rpUrl;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$stringResponse = MakeSTSRequest($requestSet,$stsUrl);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;return ExtractTokenFromResponse($stringResponse);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;function MakeSTSRequest($claimSet, $stsUrl)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;// encode the claimset&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$tokenRequestBody=http_build_query($claimSet);&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;// make the request to the STS&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$options = array(&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;"http"=&amp;gt;array(&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;					&lt;/span&gt;"method"=&amp;gt;"POST",&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;					&lt;/span&gt;"header"=&amp;gt;"Content-Type: application/x-www-form-urlencoded",&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;					&lt;/span&gt;"content"=&amp;gt;$tokenRequestBody));&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$context=stream_context_create($options);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$fp = fopen($stsUrl,'r',false,$context);&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;// capture the response into a string&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;return stream_get_contents($fp);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;function ExtractTokenFromResponse($stringResponse)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;parse_str($stringResponse,$Values);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;return $Values["wrap_token"];&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;function CreateSignature($claimSet, $key)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$hmacFreeClaimSet=http_build_query($claimSet);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;$key64Encoded=base64_decode($key);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;return base64_encode(hash_hmac("sha256",$hmacFreeClaimSet,$key64Encoded,true));&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;?&amp;gt;&amp;nbsp;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918386" width="1" height="1"&gt;</description></item><item><title>Requesting Tokens from Access Control Service</title><link>http://blogs.msdn.com/sskier/archive/2009/11/06/requesting-tokens-from-access-control-service-in-php-and-java.aspx</link><pubDate>Fri, 06 Nov 2009 05:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918382</guid><dc:creator>sskier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/sskier/comments/9918382.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sskier/commentrss.aspx?PostID=9918382</wfw:commentRss><description>&lt;DIV&gt;When designing the Access Control Service we wanted to make it easy to request a token from the STS. We also wanted to make it possible to work with other languages, not just the .NET Framework. As such, I decided to validate the simplicity of the design by picking a few popular programming languages and implementing a token request from the Access Control Service STS. The following few posts will demonstrate requesting a Simple Web Token (SWT) using both Shared Secret and Simple Web Tokens to for the request.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;If you are unfamiliar with the Access Control Service, please check out the MSDN documentation “Overview of the Access Control Service.” (&lt;A title=http://msdn.microsoft.com/en-us/library/dd582780.aspx href="http://msdn.microsoft.com/en-us/library/dd582780.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd582780.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd582780.aspx&lt;/A&gt;)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918382" width="1" height="1"&gt;</description></item><item><title>United States map in XAML</title><link>http://blogs.msdn.com/sskier/archive/2007/04/22/united-states-map-in-xaml.aspx</link><pubDate>Sun, 22 Apr 2007 06:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2227165</guid><dc:creator>sskier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sskier/comments/2227165.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sskier/commentrss.aspx?PostID=2227165</wfw:commentRss><description>&lt;P&gt;I worked on a little toy project on the side for which I needed a XAML map of the United States; however, I could not find such a thing myself. After looking through a few options I ruled out making a SVG to XAML converter, as I suck too much with XSLT. So instead, I traced a map of the united states from an image state by state. End result is attached for your consumption. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;I will continue working with this XAML by making it interactive with some JavaScript thanks to &lt;A class="" title="WPF/E Silverlight" href="http://www.microsoft.com/silverlight/" mce_href="http://www.microsoft.com/silverlight/"&gt;WPF/E (Silverlight)&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2227165" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/sskier/attachment/2227165.ashx" length="53012" type="application/xaml+xml" /></item><item><title>Applying the Secure Development Lifecycle to the Windows Communicaiton Foundation</title><link>http://blogs.msdn.com/sskier/archive/2006/06/20/640265.aspx</link><pubDate>Tue, 20 Jun 2006 23:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640265</guid><dc:creator>sskier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sskier/comments/640265.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sskier/commentrss.aspx?PostID=640265</wfw:commentRss><description>On the first day of TechEd 2006 I did a chalk talk on this subject. It being the first day and the first talk of the day there wasn't a huge response. The reason I did this chalk talk is because there were numerous teams within Microsoft as well as external customers who learned about the WCF process and were interested in further details. I also attached the slide-deck for this presentation. I hope it renders correctly as I did create it in Beta 2 and converted it to 2003.&lt;br&gt;&lt;br&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;br&gt;&lt;i&gt;This talk will describe how the Windows Communication
Foundation (Indigo) team applied the Trustworthy Computing Security Development
Lifecycle to the WCF infrastructure. I’ll elaborate on the processes we
followed for design reviews, threat modeling, and security testing. I’ll also
describe how these processes (and lessons) can apply to securing your WCF
applications.&lt;br&gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;TechEd Chalk Talk Schedule&lt;/b&gt;&lt;br&gt;http://blogs.msdn.com/drnick/archive/2006/06/02/611213.aspx&lt;a id="_ctl0____ctl0____ctl1___Entry___Attachment___DownLoadLink" href="http://blogs.msdn.com/sskier/attachment/640265.ashx"&gt;&lt;/a&gt;&lt;br&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=640265" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/sskier/attachment/640265.ashx" length="3144192" type="application/vnd.ms-powerpoint" /></item><item><title>What is WinFx (netfx 3.0)</title><link>http://blogs.msdn.com/sskier/archive/2006/06/15/632375.aspx</link><pubDate>Thu, 15 Jun 2006 18:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:632375</guid><dc:creator>sskier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sskier/comments/632375.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sskier/commentrss.aspx?PostID=632375</wfw:commentRss><description>&lt;P&gt;While attending the WCF TechEd booth the most frequent asked question we get is "What is WinFx". This question is asked because our big sign has that as the title and each sub-group has a sub title, in my case "Windows Communication Foundation."&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;I started writing the answer in my own words but I believe that the .NET Framework 3.0 website can answer that question better. &lt;A href="http://www.netfx3.com/content/WhatIsNetFx3.aspx"&gt;http://www.netfx3.com/content/WhatIsNetFx3.aspx&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;In addition to the information on that website I can only add this tiny piece of information: Windows Communication Foundation and Windows Presentation Foundation formerly were codenamed Indigo and Avalon respectfully. Numerous developers still know those technologies by their old codename.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;The .NET Framework 3.0 (netfx3) is currently in Beta2 with a go-live license. NetFx3 is planned to be released with &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;Vista&lt;/st1:place&gt; AND for Windows XP as well as 2003.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=632375" width="1" height="1"&gt;</description></item></channel></rss>