It’s time for a refresh for ADAL .NET v3 preview!
There’s nothing earth-shattering this time around… if you don’t consider adding a brand new platform earth-shattering, of course Winking smile

This refresh includes lots of bug fixes and small improvements, as  you would expect from a refresh. However as the feature set is still fluid, we did add a couple of more substantial improvement.

Support for Xamarin Unified API for iOS

In the first preview, ADAL .NET v3  supported iOS development via the classic API Xamarin project type, the one associated to MonoTouch10, to be concrete. Those project types are unable to target x64, which is at odd with the new requirements that Apple started enforcing on its app store since February.
With this refresh, ADAL moves to the new Xamarin Unified API for iOS – which does support 64 bits. If you take a peek at the targets in the NuGet package, shown in the screenshot at the beginning of the post, you’ll notice the corresponding new platform target, Xamarin.iOS10.

Naturally, we (where “we”==Danny Smile) updated the multi target sample to reflect the new features – you can find it here.

To preempt a question that – I am sure – you would have sent me right after having read this section. This refresh does not work with Xamarin.Forms. We are looking into it – and if you have feedback please send it our way! – but we didn’t do work in this refresh to that end.

ADAL support for .NET Core

My friend Daniel Roth is going to yell at me for not having written this as the first notable news in this refresh Smile

Last week I guest-posted on the ASP.NET & Web dev tools team blog, mentioning that we have brand new OWIN middleware for OpenId Connect and OAuth2 bearer token in ASP.NET 5 and .NET core. That covers you for doing Web sign on and token validation in Web API – but it does not help if you want to consume API.

I am super happy to tell you that from this refresh on you can experiment with ADAL in your ASP.NET 5 projects and consume API from Azure, Office 365 and any other API protected by Azure AD.
Once again, if you unpack the ADAL NuGet you’ll find that we added the new platform target aspnetcore5, which delivers to your Web app a brand new, confidential client only library for all your mid tier needs.

To demonstrate the new functionality we (where “we” == still Danny Smile) put together a new sample, WebApp-WebAPI-OpenIdConnect-AspNet5.
This is the ASP.NET 5.0 counterpart of the classic WebApp-WebAPI-OpenIDConnect-DotNet, which demonstrates how to implement Web sign on AND invoke an AAD-secured API, all via OpenId Connect. It is an incremental refinement of the sample announced last week, WebApp-OpenIdConnect-AspNet5, which only covered Web sign on sans web API call.
There isn’t much else to say about the new sample: all the changes are mostly due to the new OWIN pipeline in ASP.NET 5 and the new project templates, you should not have any surprises. If you do, please let us know!

Final note on this. Although we only released this new sample, all the service side scenarios using ADAL should now work: that means client credentials, onbehalfof and the like. Feel free to give it a spin, we are eager to hear from you what works and what doesn’t.

Still an Alpha

At the cost of being pedantic, I have to issue the usual warning here: this is still a preview release. We hope it will be enough to help you experimenting with scenarios we believe you’ll find interesting, but as you play with the library you should remember that for the time being 1) it is not fit for production and 2) between now and general availability, the programming model can and will change. If you writ code against the current model, please be prepared to revv it once a newer release will come along.

That’s it! I know that those two features were highly sought-after. We hope that this refresh will unblock whatever experiments you were conducting on Xamarin iOS and/or ASP.NET 5. Please help us to prioritize new work, keep the feedback coming Smile happy coding!


Leave a Reply

Your email address will not be published. Required fields are marked *