「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[WebAPI]]
--[[認証基盤]]

* 目次 [#r64739a3]
#contents

*概要 [#g7a5a85b]
-[[WebAPI]]の認証方式について纏めてみた。
-基本的に[[OpenID]]([[OAuth]])系の技術が使用されている。

*技術 [#y691c9cb]
以下の様な技術が使われている。

**[[ベース クライアント セキュリティ モデル>リソース アクセス ストラテジ#d89f0147]]的な認証 [#pdf7d1f7]

要するに、Resource Owner(ユーザ)を認証。

***[[OAuth]] [#i9d2fe0c]
***[[OpenID Connect]] [#ffb5c42b]

**[[サーバー信頼モデル>リソース アクセス ストラテジ#hb2e347c]]的な認証 [#g8f9d90d]

要するに、Client(アプリケーション・サーバ)を認証。

***[[証明書]] [#ka5abdc6]

***[[JWT]] [#pd84b613]
[[OAuth 2.0 JWT Bearer Token Flow>JWTとOAuth2.0#f5007063]]

-JSON Web Token (JWT) Profile~
for OAuth 2.0 Client Authentication and Authorization Grants~
https://tools.ietf.org/html/rfc7523

***[[SAML]] [#i14620f1]
[[OAuth]] 2.0 [[SAML]] Bearer Token Flow

-RFC 7522 - Security Assertion Markup Language (SAML) 2.0 Profile~
for OAuth 2.0 Client Authentication and Authorization Grants~
https://tools.ietf.org/html/rfc7522

*用例 [#ac0049bd]

**[[ベース クライアント セキュリティ モデル>リソース アクセス ストラテジ#d89f0147]]的な認証 [#h004aa1d]

***認可を行う [#z3e4033c]
[[OAuth]]ダンスの[[OAuth]] 2.0 が主流である模様。

***認証を行う [#t9fe8437]
[[OAuth]] 2.0 や [[OpenID Connect]]が使われる。

**[[サーバー信頼モデル>リソース アクセス ストラテジ#hb2e347c]]的な認証 [#p99216b3]

***Twitterの例 [#zabb2cc5]
[[ココ>Windows 10 IoT Core#sf52910f]]を見ると解るが、~
-[Consumer Key]
-[Consumer Secret]
-[Access Token]
-[Access Token Secret]

が必要になる。

このため以下の様な方式になっているものと考える。

-キーの名称から、内部は[[OAuth 1.0a>http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art014]]で実装されている模様。

-[[OAuth]] 2.0であれば、[[サーバー信頼モデル>リソース アクセス ストラテジ#hb2e347c]]の場合、[[Client Credentialsグラント種別>OAuth#o9473080]]でイイと思うが、~
[[OAuth 1.0a>http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art014]]であるため?管理画面で、[Access Token]と[Access Token Secret]を取得している模様。

--参考
---Twitter REST APIの使い方~
https://syncer.jp/Web/API/Twitter/REST_API/
---Twitter の OAuth 1.0 認証 – 解説。 | みむらの手記手帳~
http://mimumimu.net/blog/2011/11/26/twitter-%E3%81%AE-oauth-1-0-%E8%AA%8D%E8%A8%BC-%E8%A7%A3%E8%AA%AC%E3%80%82/

***Google、Microsoft ([[AzureAD>Microsoft Azure Active Directory]]) Salesforceの例 [#y64e882c]
[[OAuth 2.0 JWT Bearer Token Flow>JWT bearer token authorizationグラント種別]]が使用されている。

**IoT deviceの認証 [#ofdfbda4]
***[[Wio Node (Wio Link)>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C#c4b8bab8]] [#a0886d12]

***HCP (SAP HANA Cloud Platform) [#nf850c74]
Wio Linkの生成したToken(Query Stringに指定)に加えて、~
HCPに登録・生成したDevice IDとOAuthのBearer TokenをAuthorizationヘッダに追加している。

-From WioLink via Beagle Bone Green (wireless) to SAP HCP IoT Service | SAP Blogs~
https://blogs.sap.com/2016/05/19/from-wiolink-via-beagle-bone-green-wireless-to-sap-hcp-iot-service/

*実装例 [#n57dcdd0]

**ASP.NET Web APIの例 [#gbd49ae6]
JWT形式のAccess TokenをFilterAttributeで認証してClaimsPrincipalを通じて連携する。~
この場合、ASP.NETIdentityには依存すること無く認証を行うことができる。

-ActionFilterAttribute, IAuthenticationFilter~
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Business/Presentation/MyBaseApiControllerAsync.cs
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Frameworks/Infrastructure/Business/Presentation/MyBaseAsyncApiController.cs

----
Tags: [[:プログラミング]], [[:通信技術]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET Web API]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS