Why I Joined Hawcx
2 週間前
いろんなアイデンティティ管理系製品やサービスの実験の記録をしていきます。 後は、関連するニュースなどを徒然と。
we are announcing today that two key features of Windows Azure Active Directory are available at no charge.
- Access control provides centralized authentication and authorization by integrating with consumer identity providers, such as Facebook, or using on-premises Windows Server Active Directory. By having Access Control available you can create a single application that can allow users to login with both their Organizational Credentials stored in Windows Azure AD or Windows Server AD, or to login in using popular consumer service identity services like Microsoft Account, Facebook, Google, or Twitter. Historically, Access Control has been priced based on the number of transactions. We are now making it free.
- Core Directory & Authentication enables capabilities such as single sign-on, user and group management, directory synchronization and directory federation. These features are currently free in the Windows Azure AD Developer Preview and will remain free after it reaches general availability.
Target Endpoint | https://accounts.accesscontrol.windows.net/tokens/OAuth/2 | |
---|---|---|
Method | POST | |
Request Header | Content type | application/x-www-form-urlencoded |
Request Body | grant_type | http://oauth.net/grant_type/jwt/1.0/bearer |
assertion (実際は Symmetric Key でデジタル署名したもの) | { "alg": "HS256", "typ": "JWT" } { "aud": "00000001-0000-0000-c000-000000000000/accounts.accesscontrol.windows.net@[TenantContextId]", "iss": "[AppPrincipalId]@[TenantContextId]", "nbf": "[UNIX 時間で現在の時刻]", "exp": "[UNIX 時間でTokenの有効期限]" } | |
resource | resource : 00000002-0000-0000-c000-000000000000/directory.windows.net@[テナントID] |
import javax.crypto.spec.SecretKeySpec; import javax.crypto.Mac; import org.apache.commons.codec.binary.Base64; public class GenerateSignature { private static byte[] signData(String signingKey, String rawToken) { SecretKeySpec secretKey = null; secretKey = new SecretKeySpec(Base64.decodeBase64(signingKey), "HmacSHA256"); Mac mac; byte[] signedData = null; try { mac = Mac.getInstance("HmacSHA256"); mac.init(secretKey); mac.update(rawToken.getBytes("UTF-8")); signedData = mac.doFinal(); } catch (Exception e) { System.out.println("signData error"); } return signedData; } /** * @param args */ public static void main(String[] args) { String signingkey = "Li7Awy53cq(以下略。SymmetricKey文字列)"; String rawToken = "eyJhbGciOiJ(以下略。ヘッダ部分)).eyJleHAiOiIxMzQ4(以下略。ボディ部分)"; String signature = Base64.encodeBase64String(signData(signingkey,rawToken)); System.out.println(signature); } }
Target Endpoint | https://directory.windows.net/[テナントドメイン名].onmicrosoft.com/Users | |
---|---|---|
Method | GET | |
Request Header | Authorization | 取得した Access Token 文字列(bearer 以降) |
x-ms-dirapi-data-contract-version | 0.8 |
ベンダ | サービス/製品 | 特長 | フェデレーション | プロビジョニング | 認証強化 |
---|---|---|---|---|---|
Intel | Intel Cloud SSO | 対応APLが多数 | ○ | ○(サービスによる) | OTP、IP制限、モバイル、時間帯、曜日 |
Microsoft | Windows Azure Active Directory | Office365連携 | ○ | Office365 | AD FS2.x ベースのカスタマイズ |
PingIdentity | PingFederate | オンプレミス | ○ | ○(サービスによる) | 証明書、RSA SecureID、Symantec VIP、PhoneFactor |
重要なお知らせ – Windows Azure アクセス制御サービスの設定情報確認のお願 い
お客様各位、
マイクロソフトは、Windows Azureアクセス制御サービス(ACS)の設定情報(証明 書利用者、IDプロバイダー、ルールなど)が、ある条件下で予期せずに損失する こと検出・修正しました。この修正は、日本時間2011月12月 12日午前11時に実行 いたしました。この障害は一部のお客様のみ発生しております。念 のため、お客 様のACSの名前空間が正しく設定されているかご確認お願いいた します。
対象バージョン: Windows Azure Access Control Service 2.0
この度は、ご迷惑をおかけしたことを深くお詫び申し上げます。ご不明な点がご ざいましたら、https://www.windowsazure.com/j a-jp/support
カスタマー サポート までお問い合わせください。
var f_birthday = new WebClient().DownloadString(@"https://graph.facebook.com/me?fields=birthday&access_token=" + [ACS より取得したアクセス・トークン]); var json = DynamicJson.Parse(f_birthday); TextBox1.Text = json.birthday; |
System.Collections.Specialized.NameValueCollection ps = new System.Collections.Specialized.NameValueCollection(); ps.Add("access_token", [ACS から取得したアクセス・トークン]); ps.Add("message", [投稿したいメッセージ]); WebClient wc = new WebClient(); byte[] resData = wc.UploadValues(@"https://graph.facebook.com/me/feed", ps); wc.Dispose(); |