It’s possible to run IIS-hosted WCF locally, with SSL.
Here’s the full guide: Configure an IIS-hosted WCF service with SSL.
To generate self-signed trusted SSL certificate, see How to Create Valid and Trusted SSL Certificate (Wildcard) for Development.
Just in case you need it, for web application to run on IIS Express with SSL, see: Enable SSL in IIS Express
Normally, I would re-write a blog post in hope to provide better explanation and concise the article, but since this is from Dominick Baier, I think he does it the best.
So, here’s it, how to apply claims based authorization in ASP.Net MVC and Web Api:
The API is not intuitive, at least not for me. So, I have to figure out how to return
null with this mocking framework I have never used before.
var service = Substitute.For<ISomethingService>();
service.Get<IEnumerable<SomeDomain>>(Arg.Any<string>()).ReturnsForAnyArgs(x => null);
Normally, I would just to
.ReturnsForAnyArgs(null), not the case with NSubstitute.
Azure cloud model is generally divided into two: Infrastructure as a Service (IaaS) and Platform as a Service (PaaS).
The difference is how much you have to manage in each service. The more you have to manage, the more you have to pay.
See this graph below:
When I first getting started on Microsoft Azure, I was confused between these two: Azure Web Site and Web Role.
Azure Web Site is one of many Azure services while Web Role is an instance running behind Azure Cloud Service, another service offered by Azure. Since then, Azure Web Site has been changed to Azure Web App.
Basically, the difference is the control you have and portion you have to manage in each service.
Azure Cloud Service, Web Role in this case, gives you more control, but with more control, comes greater responsibility. See this graph below:
For detail technical difference, see Feature Comparison on Azure App Service, Cloud Services, and Virtual Machines comparison.
Microsoft Azure is evolving universe. Couple years ago, there were only less than 15 services. Today, there are hundreds and Microsoft keeps adding more so expect even more to come.
Generally, the services are divided into the following group. There more than what is listed here, but these are the main groups.
- Data Management
- Messaging and Integration
- Identity and Access
- Big Data
See below graph to get some idea which service belongs to which group. Again, these are generally idea, not every service and group are listed here.
To get more detail on Azure Services and its groups, check out this Azure infographic from Microsoft.
Now, what do all these components mean to you as a developer? Each component is a tool and you can use it as a building block to your application, be it a web, mobile or windows application. To give you some ideas, this is what your typical application architecture would look like using Azure Platform.
What’s really amazing about Microsoft Azure is Microsoft has opened up Azure for ecosystem other than Microsoft. If you are MEAN stack developer, you can deploy MongoDB, Express, AngularJS and Node.js in Azure. You can even deploy MySQL, write PHP code or spin up Linux virtual machine in Azure. Yes, it’s now Microsoft Azure and not WIndows Azure anymore because it doesn’t just belong to Windows or .Net developers, but all kind of developers.
Azure is huge and it is the future. If you haven’t got your hand in Azure, roll up your shirt sleeves and get dirty now. And if you care to read more, head out to Introducing Microsoft Azure.
To prevent un-authorized access to your MongoDB database, you can add security to it by requiring authentication whenever someone tries to connect.
It’s simple, run the
--auth option. the command is:
// To add user
> use admin;
// Start mongod with --auth
$ sudo mongod --auth --dbpath /data
// Run mongo and login
$ mongo localhost:27017
> use admin
// Include login in mongo command
$ mongo localhost:456789/admin -u admin-p 123456
More MongoDB security option: http://docs.mongodb.org/manual/administration/security/
WIF 4.5 has
ClaimsPrincipalPermission.CheckAccess method, very useful to check user’s authorization. You can use this as method call or attribute.
// Imperative method call
public ActionResult Index()
[ClaimsPrincipalPermission(SecurityAction.Demand, Operation="foo", Resource="bar")]
public ActionResult ViewFoobar()
Either way, how do we unit test this? My approach is to first abstract out
ClaimsPrincipalPermission and create a new wrapper class that will be injected to the dependent class.
public class ClaimsPrincipalWrapper : IClaimsPrincipalWrapper
public void CheckAccess(string resource, string action)
public class HomeController : Controller
private readonly IClaimsPrincipalWrapper _ClaimsPrincipalWrapper;
public HomeController(IClaimsPrincipalWrapper claimsPrincipalWrapper)
_ClaimsPrincipalWrapper = claimsPrincipalWrapper;
public ActionResult Index()
public void TestIndex()
var _claimsPrincipal = new Mock<IClaimsPrincipalWrapper>();
_claimsPrincipal.Setup(m => m.CheckAccess(It.IsAny<string>, It.IsAny<string>));
var _controller = new HomeController(_claimsPrincipalMock.Object);
var _result = _controller.Index() as ViewResult;
Assert.IsTrue(_result.View != null);
There’s a problem in Visual Studio 2012 where debugging unit tests doesn’t work. This often happens when you enable code coverage.
The solution is fairly simple, un-check any selected test setting file under Test > Test Settings.
This behavior is expected, at least according to Microsoft, they just don’t support debugging for code coverage.