<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MobilityDojo.net &#187; Coding</title>
	<atom:link href="http://mobilitydojo.net/category/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://mobilitydojo.net</link>
	<description>place of the mobility way</description>
	<lastBuildDate>Mon, 14 May 2012 21:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Active Directory Federation Services and YubiKeys</title>
		<link>http://mobilitydojo.net/2012/05/14/active-directory-federation-services-and-yubikeys/</link>
		<comments>http://mobilitydojo.net/2012/05/14/active-directory-federation-services-and-yubikeys/#comments</comments>
		<pubDate>Mon, 14 May 2012 21:00:00 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[How-to's]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[YubiKey]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1802</guid>
		<description><![CDATA[The conclusion to my previous post was that I'll be showing how to implement YubiKeys along with Active Directory Federation Services. So, where do we start on this topic?...

It's sort of a logic that says that if you aren't familiar with Active Directory Federation Services (from here on abbreviated as ADFS) a lot of this post will not make sense to you at first glance. So, if you are familiar with ADFS skip ahead - if not I'll have a few paragraphs explaining why you might be interested in taking a look at ADFS.

Surely everyone has noticed that there are a lot of web sites where there's two options for signing in; either using an account for that particular site or &#34;use your Google/Facebook/Twitter account to sign-in&#34;. The basic concept is easy enough - you already have a user identity, so why would you need another one? Why can't you re-use the existing one? If you have ever logged on to a domain-joined Windows computer you've experienced this already. There is a central user catalog called &#34;Active Directory&#34; that you sign in to, and after being verified there you can access your file shares, Exchange account, etc without needing to sign into each and every one of those services.

That is certainly a good reason for re-using the identity you already have, but there's another one as well. A lot of programmers are doomed to repeat the failures of others due to their insistence of doing things from scratch. What are the odds that I will be able to code (on my first attempt) a secure login solution that is resistant against cross-site scripting, SQL injection, buffer overflows, and whatnot? (Hint: don’t go all in betting on my success.) For some reason Facebook doesn't instill a lot of confidence in me when it comes to protecting their users, though they are probably still better at it than me, but at least Google and Windows Live give me the impression of having done a thing or two to proof their solutions.
(...)
I walk through the steps required to support YubiKeys in an ADFS setup.]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2012/05/14/active-directory-federation-services-and-yubikeys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exchange ActiveSync Building Blocks &#8211; GAL Search</title>
		<link>http://mobilitydojo.net/2012/03/13/exchange-activesync-building-blocks-gal-search/</link>
		<comments>http://mobilitydojo.net/2012/03/13/exchange-activesync-building-blocks-gal-search/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 21:30:23 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[ActiveSync]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[How-to's]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1757</guid>
		<description><![CDATA[Based on the developer-friendly implementation of an encoder and decoder for AS-WBXML I just build it with a small sample implementing GAL search.]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2012/03/13/exchange-activesync-building-blocks-gal-search/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Exchange ActiveSync Building Blocks&#8211;Encode &amp; Decode</title>
		<link>http://mobilitydojo.net/2012/03/07/exchange-activesync-building-blocksencode-decode/</link>
		<comments>http://mobilitydojo.net/2012/03/07/exchange-activesync-building-blocksencode-decode/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 22:00:00 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[ActiveSync]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[How-to's]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1746</guid>
		<description><![CDATA[If you have followed the "building blocks" series you will have noticed that I have done the AS-WBXML by hand. This approach clearly doesn't scale, and will not work outside these constrained snippets intended for learning. And it makes for sample apps that are only able to serve up a very specific purpose. (Now, the sample code is meant for copying and pasting so that's pretty much by design anyways.) Not to mention it has made me look lazy for not doing things properly 

Clearly we would be a significant step further if we didn't have to create the web requests by looking up values in code pages and type in each individual byte. So, how about we take it to that very next level of Exchange ActiveSync "hacking"?
(...)
We go through how we can build a utility for encoding and decoding ASWBXML so you can copy &#038; paste XML samples from the MSDN library and test against your Exchange Server.]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2012/03/07/exchange-activesync-building-blocksencode-decode/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Exchange ActiveSync Building Blocks &#8211; DocumentLibrary</title>
		<link>http://mobilitydojo.net/2012/02/20/exchange-activesync-building-blocks-documentlibrary/</link>
		<comments>http://mobilitydojo.net/2012/02/20/exchange-activesync-building-blocks-documentlibrary/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 15:00:00 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[ActiveSync]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[How-to's]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1732</guid>
		<description><![CDATA[So, it's been a couple of months since I've been digging through the Exchange ActiveSync protocol and creating "building blocks", but the series is not abandoned yet. Sure, it went on a hiatus after covering a lot of ground in a comparably small time frame, but I will return to the topic whenever there's something I find worthwhile. (Replicating every bit of info already in MSDN is obviously not worthwhile.)

Today I thought I'd take a closer look at a feature many probably don't consider as an ActiveSync feature; file browsing :)
]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2012/02/20/exchange-activesync-building-blocks-documentlibrary/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Exchange ActiveSync Building Blocks &#8211; Remote Wipe</title>
		<link>http://mobilitydojo.net/2011/09/28/exchange-activesync-building-blocks-remote-wipe/</link>
		<comments>http://mobilitydojo.net/2011/09/28/exchange-activesync-building-blocks-remote-wipe/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 21:00:04 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[ActiveSync]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[How-to's]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1627</guid>
		<description><![CDATA[In the previous installment in this series we looked at how security policies are pushed down to our Exchange ActiveSync clients, and how to deal with them, or for that matter circumvent them. Thus I thought that it would be suitable to cover a topic highly related to implementation of security policies – how to handle remote wipe  

When dealing with the "wipe" concept there are two kinds of wipes we need to be aware of; local wipe and remote wipe. 
(...)
I take a look at the low level details of the remote wipe process, along with some sample C# code that will get you started on your own.]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2011/09/28/exchange-activesync-building-blocks-remote-wipe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exchange ActiveSync Building Blocks &#8211; Provisioning</title>
		<link>http://mobilitydojo.net/2011/09/20/exchange-activesync-building-blocks-provisioning/</link>
		<comments>http://mobilitydojo.net/2011/09/20/exchange-activesync-building-blocks-provisioning/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 21:00:00 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[ActiveSync]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[How-to's]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1564</guid>
		<description><![CDATA[I hope you've all been following along and gained a deeper understanding of the Exchange ActiveSync protocol, and possibly had time to play with coding something yourself if you are so inclined. We should at this time be able to do the initial FolderSync with Exchange, and handle most errors thrown at us. 

There are of course tons of things ActiveSync I haven't covered yet, and it is a "one step at a time" journey. 

If you're testing against an Exchange Server where you do not have direct access to the admin console, and it is under the control of an Exchange admin who doesn't permit just about anyone to sync you might have run into issues related to provisioning already, so the next step for us is to cover this very topic.

Provisioning is the mechanism which ensures that ActiveSync clients implement a given set of security policies. If necessary; Exchange Server will block devices that don't implement the policy set.

(...)

Follow along as I show in code how to perform the provisioning process, or bypass it for that matter :)]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2011/09/20/exchange-activesync-building-blocks-provisioning/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Exchange ActiveSync Building Blocks &#8211; AS-WBXML</title>
		<link>http://mobilitydojo.net/2011/09/07/exchange-activesync-building-blocks-as-wbxml/</link>
		<comments>http://mobilitydojo.net/2011/09/07/exchange-activesync-building-blocks-as-wbxml/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 20:00:00 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[ActiveSync]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[How-to's]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1562</guid>
		<description><![CDATA[I have referred to WBXML a couple of times in this series, but so far not going into any detail other than generically describing it as "ActiveSync language". I'm not attempting to make this seem like "magic" or anything, but when I started hacking around with the Exchange ActiveSync protocol myself I felt that I had to get comfortable with the basic concepts before going into this. 

If you recall when we made our first sync attempt with the FolderSync command in a POST I included the following variable as the content of the POST: 
(...)
I have no idea why I thought it logical to define the bytes with their decimal value rather than the hexadecimal value (which I have used in later WBXMLs). Still; this is a rather short and sweet snippet of WBXML so we should be able to decode it manually by using a lookup table. I've converted the values to hex, and "translated" each byte to the plain xml representation. 

Read on for more fun with binary xml.]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2011/09/07/exchange-activesync-building-blocks-as-wbxml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exchange ActiveSync Building Blocks &#8211; Error Handling</title>
		<link>http://mobilitydojo.net/2011/09/01/exchange-activesync-building-blocks-error-handling/</link>
		<comments>http://mobilitydojo.net/2011/09/01/exchange-activesync-building-blocks-error-handling/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 20:00:00 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[ActiveSync]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[How-to's]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1560</guid>
		<description><![CDATA[If you've followed the past couple of articles you'll no doubt have noticed I haven't gone out of my way to handle exceptions and errors gracefully. If you run into a problem when running the sample code against an Exchange that for some reason is configured differently than mine, (also known as entirely wrong by definition), you might run into the very helpful "Something happened" message without further explanation.

One might be tempted to ask if it's because I'm lazy, or simply do not know how to handle it. Well, ask no more, because I now intend to do something about it :)
(..)
Listing two methods for handling exceptions and errors]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2011/09/01/exchange-activesync-building-blocks-error-handling/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exchange ActiveSync Building Blocks &#8211; First Sync</title>
		<link>http://mobilitydojo.net/2011/08/24/exchange-activesync-building-blocks-first-sync/</link>
		<comments>http://mobilitydojo.net/2011/08/24/exchange-activesync-building-blocks-first-sync/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 21:30:00 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[ActiveSync]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[How-to's]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1558</guid>
		<description><![CDATA[Background reading (not a pre-requisite):
 [MS-ASHTTP] - ActiveSync HTTP Protocol - OPTIONS
 [MS-ASCMD] - ActiveSync Command Reference – FolderSync
 Digging Into The Exchange ActiveSync Protocol

If you followed along with the Autodiscover coding session you have now passed the initial hurdle of locating an ActiveSync-enabled Exchange Server. So how about we try to make a connection with that server and fetch some information from it?

There are three steps you can take in this process, where the last one will also establish a synchronization partnership with Exchange:
 - HTTP GET
 - HTTP OPTIONS
 - HTTP POST

Yes, that's a very generic description, so let's describe them further.
 (...)]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2011/08/24/exchange-activesync-building-blocks-first-sync/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exchange ActiveSync Building Blocks &#8211; Autodiscover</title>
		<link>http://mobilitydojo.net/2011/08/18/exchange-activesync-building-blocks-autodiscover/</link>
		<comments>http://mobilitydojo.net/2011/08/18/exchange-activesync-building-blocks-autodiscover/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 19:00:00 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[ActiveSync]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[How-to's]]></category>

		<guid isPermaLink="false">http://mobilitydojo.net/?p=1486</guid>
		<description><![CDATA[Background reading (not a pre-requisite): 
EAS MD 1.4 - Autodiscover Support 
blogs.msdn.com - Autodiscover for ActiveSync Developers 
[MS-ASCMD] -ActiveSync Command Reference - Autodiscover

So, enough with the excuses. Give us something we can compile, that we can use in an actual ActiveSync client, that is relevant – just something already.

Where to start with a topic like the Exchange ActiveSync protocol? I decided that although it’s kind of in reverse order if you use my EAS MD utility as the yardstick, I wanted to cover the last feature I implemented first in this series (Hey, that means I might still have the code fresh in mind, right?)

There is a reason I do it in this order. When building my tool Autodiscover wasn’t initially on top of the list of issues I had when testing and verifying Exchange Server ActiveSync setups. (I think figuring out the provisioning process was on top of my list actually.)  
But at the same time – when you configure an ActiveSync client one of the first things you have to be aware is the address to your Exchange Server. While this is not a big problem to solve by manually typing in the address it does feel smoother just typing your email address accompanied by your password and have the device figure out the rest of it. And while most IT pros will be able to figure out the address to the Exchange Server, (unless your Exchange admin is refusing to let you in on it), many end-users have no idea what Exchange even means. They usually have a clue as to what their email address might be though, so that might be a good starting point on their quest to get mail and “stuff” on their devices.

As it turns out it’s also one of the easier parts of the protocol to get started with, as you don’t have to concern yourself with WBXML and such. I’ve previously explained how Autodiscover works in general, so read up on that if you’re a bit unsure as to what we’re talking about here. (Link on top of this post.)
(...)
Getting down to real coding - implementing the Autodiscover tests.]]></description>
		<wfw:commentRss>http://mobilitydojo.net/2011/08/18/exchange-activesync-building-blocks-autodiscover/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

