私たちは、RESTベースのサービスに対してSTS(クレームベースの認証)を実装しています。 JSONを使用してRESTサービスを作成することを決定した多くの理由の1つは、ワイヤー上の小さなフットプリントでした。 STSでは、SAMLトークンはSAMLサイズが数Kバイトになります。オブジェクトのリストを返さないREST呼び出しのほとんどでは、応答サイズは100sバイトと小さく、これらの呼び出しではこのトークンがオーバーヘッドになりすぎます。あなたのプロジェクトでこれをどのように処理していますか?SAMLトークンサイズとREST
答えて
RESTエンドポイントでSAMLトークンを使用できますが、代わりにSimple Web Token(SWT)を使用している人が見つかることがよくあります。小さく、シンプルななど
ACS(Windows Azure Platformのアクセス制御サービス)は、これを実装しています。
...またはJWT(JSon Webトークン)。 ACSもこれをサポートしています。 この記事をチェックJSON Web Token Handler for the Microsoft .NET Framework 4.5 対称キーベースのHMAC SHA256で署名されたJWTを発行し検証する.Net 4.5を使用したこのライブラリの使用例を次に示します。
string jwtIssuer = "MyIssuer";
string jwtAudience = "MyAudience";
// Generate symmetric key for HMAC-SHA256 signature
RNGCryptoServiceProvider cryptoProvider = new RNGCryptoServiceProvider();
byte[] keyForHmacSha256 = new byte[64];
cryptoProvider.GetNonZeroBytes(keyForHmacSha256);
///////////////////////////////////////////////////////////////////
// Create signing credentials for the signed JWT.
// This object is used to cryptographically sign the JWT by the issuer.
SigningCredentials sc = new SigningCredentials(
new InMemorySymmetricSecurityKey(keyForHmacSha256),
"http://www.w3.org/2001/04/xmldsig-more#hmac-sha256",
"http://www.w3.org/2001/04/xmlenc#sha256");
///////////////////////////////////////////////////////////////////
// Create token validation parameters for the signed JWT
// This object will be used to verify the cryptographic signature of the received JWT
TokenValidationParameters validationParams =
new TokenValidationParameters()
{
AllowedAudience = s_jwtAudience,
ValidIssuer = s_jwtIssuer,
ValidateExpiration = true,
ValidateNotBefore = true,
ValidateIssuer = true,
ValidateSignature = true,
SigningToken = new BinarySecretSecurityToken(keyForHmacSha256),
};
///////////////////////////////////////////////////////////////////
// Create JWT handler
// This object is used to write/sign/decode/validate JWTs
JWTSecurityTokenHandler jwtHandler = new JWTSecurityTokenHandler();
// Create a simple JWT claim set
IList<Claim> payloadClaims = new List<Claim>() { new Claim("clm1", "clm1 value"), };
// Create a JWT with signing credentials and lifetime of 12 hours
JWTSecurityToken jwt =
new JWTSecurityToken(jwtIssuer, jwtAudience, payloadClaims, sc, DateTime.UtcNow, DateTime.UtcNow.AddHours(12.0));
// Serialize the JWT
// This is how our JWT looks on the wire: <Base64UrlEncoded header>.<Base64UrlEncoded body>.<signature>
string jwtOnTheWire = jwtHandler.WriteToken(jwt);
// Validate the token signature (we provide the shared symmetric key in `validationParams`)
// This will throw if the signature does not validate
jwtHandler.ValidateToken(jwtOnTheWire, validationParams);
// Parse JWT from the Base64UrlEncoded wire form (<Base64UrlEncoded header>.<Base64UrlEncoded body>.<signature>)
JWTSecurityToken parsedJwt = jwtHandler.ReadToken(jwtOnTheWire) as JWTSecurityToken;
対称キーを使用する機能が見つからないようです。つかの間の種類:-( –
あなたは何を意味するのか分かりませんが、その場合には、JWTを作成、符号化、シリアル化して逆の処理を行うコードを表示するために私の答えを更新しました。 – Kastorskij
はい!私が必要としていただけでパーフェクト!ありがとう! –
- 1. SAML SSO Django RESTフレームワークによる認証
- 2. SAML 2.0とEncryptedAssertion
- 3. SAMLとID
- 4. ACSとSAML 2.0
- 5. SAML 1x vs SAML 2.0
- 6. RESTサービスでSAMLを実装するためのベストプラクティス
- 7. SAMLと強制SSL
- 8. SharePoint 2010とSAML 2.0
- 9. Spring SAMLとADFS 2.0
- 10. Grails 2.5.6とSAML 2.0
- 11. Python SSO:pysaml2とpython3-saml
- 12. SAML SSOクライアント、テストシミュレータSAMLプロバイダ/サーバ
- 13. oneloginのSAMLとの統合
- 14. SAMLとAPIMの統合1.9.0
- 15. SAMLとOAUTHのハードウェアソフトウェア要件
- 16. SSOとSAML - 複数のサービスプロバイダ
- 17. AngularjsとSAML、はじめに
- 18. SAML認証とカスタムリダイレクトURL
- 19. Samlの概要と実装
- 20. ノードJSとSAMLの例
- 21. SAML 2.0サービスプロバイダとしてAzure
- 22. SAML 2.0レスポンスとKeyInfoエレメント
- 23. WSCM MVCアプリケーションの複数のクライアントのSAML 1.1とSAML 2.0との連携
- 24. xacmlとwso2のsamlとの統合
- 25. SAML要求の生成とWebブラウザの応答からのSAMLトークンの抽出
- 26. HTTPバインディングのSAML
- 27. Google SAMLレスポンスXML
- 28. SAML属性AttributeStatement
- 29. ADFS 2.0 SAMLログアウト
- 30. SAML NameIdポリシー
SWTが前進しているようには見えません。 JWTも未発達です。 SAMLは今のところ対処しなければならないようです。 http://startersts.codeplex.com/discussions/242113?ProjectName=startersts –