如何在Windows Store应用程序中进行TLS/SSL通讯

Windows Store应用程序经常需要使用各种Web服务,为了安全起见,这些服务最好是通过https来访问。那么我们如何在Windows Store应用中使用证书来进行安全的通讯呢,我这里就做一个简单的小结。 首先,如果服务端使用了服务端认证,那么Windows Store应用作为客户端连接服务器的时候,需要验证该服务端证书在客户端是受信任的。那么分两种情况: 一.         如果该证书是被受信任的机构签发的,而且该机构的Root证书已经缺省安装到了客户端,那么,Windows Store应用程序只需要在Package.appxmanifest文件中加入对Shared Uer Certigficates这个Capability的支持,应用程序会自动到系统的Certificate Store中找到该Root证书并通过验证。不过这种方法也有一个问题,由于客户端只验证服务端证书是否来自于同一个Root,所以我们可以很容易的伪造一张服务端证书来通过验证。 二.         如果该证书是一张自签名的证书,那么确实情况下客户端是不会安装这张证书的。那么这时候Windows Store应用程序就无法通过证书的验证。这个问题也好解决,向第一种情况靠拢呗。如果在客户端已经手动安装了这张自签名的证书,那就没问题啦。所以我们需要做的就是将这个自签名的证书从服务端下载下来,然后一台一台的安装到客户端Certificate Store的Root目录下。 可是,这个方法也太不靠谱啦!在很多情况下,我是没有办法将自签名证书一台一台安装到客户端的呀。有没有其他办法呢?有的!我们可以将证书放在Windows Store应用程序中,然后通过Package.appxmanifest的Declarations添加这张证书: 1.       在Available Declarations中选择Certificates,点击Add。 2.       在右边的Trust flags勾选上Exclusive Trust,加上这个以后,就能够保证不是随随便便用一张服务端证书就能够把客户端应用糊弄过去啦。 3.       在右边的Certificates中点击Add New, Store Name需填写Root,Content中添加你所要验证的服务端证书。 4.       在添加以后,该服务端证书会自动添加到你的项目中,我们需要在该证书的文件属性中将Copy to Output Directory改为Copy if newer。 这样,我们就可以很方便的完成服务端验证了,而且也不用担心有人通过伪造服务端证书来截取通讯内容。 接下来我们看一下需要客户端认证的情形。这种情况下,我们需要做两件事: 一.保证客户端已经正确安装了客户端证书。你可以把你的证书文件放在项目中或者远程服务器上。当你的Windows Store应用获得了PKCS12格式的证书数据以后,就可以调用 CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync或者CertificateEnrollmentManager.InstallCertificateAsync来安装该证书。 二.一旦客户端已经正确安装了客户端证书,那么就需要在Windows store应用中获得该证书的实例,这可以通过CertificateStores.FindAllAsync来枚举所有的证书实例,然后找出你所需要的那个,FindAllAsync也支持传入一个CertificateQuery参数来进行筛选。 在获得证书实例之后,我们就可以通过HttpBaseProtocolFilter来设置客户端证书,然后将HttpBaseProtocolFilter作为参数传入HttpClient中实现客户端验证,示例代码如下: var certificates = await CertificateStores.FindAllAsync(); var certificate = certificates.Where(w => w.Subject.Equals(SUBJECTNAME)).FirstOrDefault();…


Azure AD で フェデレーション未対応の Web アプリと SSO を構成する (Password-based Single Sign-On)

こんにちは。 これまで、この機能が好きになれず、あまり触れてこなかったのですが、ご質問をいただくので以下に記載しておきます。   Password-based Single Sign-On とは (おさらい) 「Azure AD の Google Apps (SaaS) 連携」で解説したように、既存の SaaS アプリとの Single Sign-On (SSO) では、Password-based single sign-on と Federation-based single sign-on が提供されています。 例えば、SAML を使って SaaS アプリと Azure AD をつなぐことで、Azure AD (Azure Active Directory) でログインをおこなって、そのアイデンティティで GMail (SaaS アプリ) を使用することが可能です。こうした、いわゆる SAML などの標準プロトコルを使った連携は後者です。 これに対し、本日解説する Password-based single sign-on では、Azure AD にログインした後で、Browser の Plug-in…


A Teacher’s Guide to using Microsoft OneNote Class Notebook Creator

Guest Post by Tamara Sullivan – Microsoft Expert Educator I have been an avid user of Microsoft OneNote in my classroom for years. I first started using the program to design unit outlines and course materials to share with my colleagues. As the technology improved, then came the ability to be able to collaboratively work…


Google Chrome では Lync Web App がサポートされなくなりました。

2017/05/10 追記 最新の対応状況については、以下の Blog を参照ください。 Lync Web Apps の Google Chrome 対応状況 https://blogs.msdn.microsoft.com/lync_support_team_blog_japan/2017/05/10/lwa-googlechrome/   2015/02/02 (月) 追記 Google 社側が NAPI を Chrome から廃止した後も Google Chrome で Lync Web App へ 参加できるよう、Lync Web App 側で対応できるように実装を変更する予定です。 現時点で具体的な対応時期についてお伝えできる状況にありませんので、追加の情報をお待ちください。 なお、CU のバージョンによっては、すでに Google Chrome を拒否する実装がありましたが、最新の CU では、Google Chrome で Lync Web App を使用できるようになっております。   おはようございます。 Lync サポートの吉野です。 本日は珍しく朝投稿させていただきます。 さて、12月更新の Lync…


Using DMARC in Office 365

Exchange Online Protection (EOP), also known as Office 365, will soon be supporting DMARC for authenticating email which is a feature designed to combat phishing and spoofing of email. If you’re unfamiliar with DMARC, here are a few links that explain it: My own blog post: A brief introduction to DMARC http://blogs.msdn.com/b/tzink/archive/2014/11/04/a-brief-introduction-to-dmarc.aspx My article for…


$100 quad monitor workstation GPU

Coles notes (or Cliff notes for USA folks): get the Gigabyte GV-R725XOC-1GD or GV-N750OC At Microsoft, we love multiple monitor setups. It is quite rare to see developer workstations with *just* one monitor; most developers have two monitors and quite a few are using 3 or 4 these days. I have 3 Dell 1920×1200 IPS panels hooked…


Cornell Note taking, OneNote and OneDrive – Note making Nirvana

Guest Post by Matthew O’Brien – Microsoft Expert Educator As a learner I was always bad a taking notes and even worse at making them. I went through school and university pre mobile computing and was limited to A4 pages – At university, if we were lucky, the lecturer might let us copy his or…


Release history for the Azure DSC Extension

On August 2014 we introduced the Azure Desired State Configuration (DSC) Extension, which can be used to upload and apply a DSC configuration on an Azure VM. We will use this blog post to keep a history of the different releases with short descriptions of the changes introduced in each release. We will update this…


Mosaic LiveTiles: Creating Dynamic Office 365 Learning Portals

Guest Post by Tamara Sullivan – Microsoft Expert Educator I have recently been exploring how to create the `connected learner’ for both students and educators. A platform which provides a customisable space using an intuitive interface design for anywhere, anytime and any device learning. This is where I was fortunate enough to stumble across Office…


Azure AD の kintone 連携 (Application Gallery)

開発者にとっての Microsoft Azure Active Directory Azure Active Directory とは (事前準備) Web SSO 開発 – .NET 編 (WS-Fed) Web SSO 開発 – PHP, Node.js 編 (SAML) ※英語 SaaS 連携 : Google Apps (SAML) SaaS 連携 : kintone (SAML) OpenID Connect サポート (OpenID) OAuth による Client の開発 (OAuth) OAuth による Service の開発 (OAuth) Common Consent Framework – Client 側…