From 66f3f7cc029f73c1ecbe0e6b893d83a2e174eb6a Mon Sep 17 00:00:00 2001 From: kamaljeet chauhan Date: Thu, 13 Aug 2020 14:54:42 +0530 Subject: [PATCH 1/7] ACR-289 Oauth2 C# API deprecated Signed-off-by: kamaljeet chauhan --- .../personal/media/oauth2_auth_code.png | Bin 12479 -> 0 bytes .../media/oauth2_client_credentials.png | Bin 3696 -> 0 bytes .../guides/personal/media/oauth2_implicit.png | Bin 14499 -> 0 bytes .../guides/personal/media/oauth2_password.png | Bin 8539 -> 0 bytes .../personal/media/oauth2_protocol_flow.png | Bin 9502 -> 0 bytes .../dotnet/guides/personal/oauth.md | 481 ------------------ 6 files changed, 481 deletions(-) delete mode 100644 docs/application/dotnet/guides/personal/media/oauth2_auth_code.png delete mode 100644 docs/application/dotnet/guides/personal/media/oauth2_client_credentials.png delete mode 100644 docs/application/dotnet/guides/personal/media/oauth2_implicit.png delete mode 100644 docs/application/dotnet/guides/personal/media/oauth2_password.png delete mode 100644 docs/application/dotnet/guides/personal/media/oauth2_protocol_flow.png delete mode 100644 docs/application/dotnet/guides/personal/oauth.md diff --git a/docs/application/dotnet/guides/personal/media/oauth2_auth_code.png b/docs/application/dotnet/guides/personal/media/oauth2_auth_code.png deleted file mode 100644 index d57afd0a41e310f36f7efd94c377de8154ed9e2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12479 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 diff --git a/docs/application/dotnet/guides/personal/media/oauth2_client_credentials.png b/docs/application/dotnet/guides/personal/media/oauth2_client_credentials.png deleted file mode 100644 index 487ef122ba0c5b825efbfd2c6b198517d1d82f8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3696 zcmd5*3_7`Au)u+>7=&OilXK! zHAfJMA!4ZAA!3X~nh;}AAyk4?5GVG&_ny1YJCy+`bQScR|1H~_qA<{0D2VX5EYo!`LB@MW30or$Y z$r1v1EC)Oas8^^I`w6C~3-~Rq^kCx0KW{2briMN5u57y-RZKelvwnc?88ZNZ9_1r;7q z;)2U)#D_LZO)~RzF*-I`n+;s!lBi9$LwB_|@m=Lsk zyFPCSZU^+|1jp8F*bz3pWAE6>(Pz56zih7a{wn9(y@03m2jtK9p_R9zI)jwg`^-Ns zWt~D9F73Id2DyySr)4LJTX5@YEE@K&$F~_Q`LEBSX!6nixTV+nZp$>h$$W5q4xg=G zG+Xl4(=EC?c071q$4$6hBBgFPncWi9?8&ihlJvoX+tv`)KH`h93`>xaZV>-m7$OPF z*@;%_C%9rfr%q7KNuPNz=94c2<58o+*Ikz|?Pw4uSnJ_v{LIcuo0n}bm^;1|*iP0{ z8rU9Nnk#8{y=2o`90Oa9J0nZ)Zjo(IC>&L>6=IhvR6WdouyYxm{m4XKxm!(fq&v&W z*|(^YA+#u6OUSV zR!gG^9&}uuY|brlcOH??jKIT3PR7l-CCO*Wr)9}Na$KaCXuDD{)};ZdS54r%pkRI& zqdAXVyZKmb0b96^Z_TX=)^!3Sn6~34c}Ybuq*;#UYqsiVW#szTC_D zr+D|9(nZy>cWn)(t&Ykx2x!LTjc1}xU*-iadG;e=Q7PP|d&C@yUq?l}J@R=_)l#md z`(39pZl}&c^0Un6W#jitVU!?#bHUM-1Uq#(C-QCHNUt-zIg6^VEkoQ~wy0{YWAr~D zqIP&TN_mcO*z-#HexAP(ZD%nAs_VpnRN==OOVg>!`6k@rrlQHE#GZWvhMV%`v^v>= z0l0J0U@V}oq~1tzW3kn~Dr_mh!sw;b}uGp?!m&`3In=rU2KQfHi+#ewBXy>oP%z#Fi z703n)AWXq0WUm6ha{WwHnl~0q^%)|}x_ME>tshl~kD4C66GdcVusp z6|QVNr4&|0U;eIr>&&$fB%2Rzui}g?d#%qr+zM|n~Gre3rK-4pliTGepgR(&Y+}O zt9dlUnC%37XEmN^9q^+rm1k@)CF4-c%+R(BF6U`|9?(x>$f&p5&SiJM63|yo#-63> zAAU~t|26SF%B{8eXGSj37Mg&P4xDPL-ics_WexjaR=##fE--489|C93B`Z~6Nz!Zc zrV3JS=?6{kB8!(1vRU#?6FZjFAFQPG%QLa`%G%ure@VBwkn&9oFx_#BuezmqioIE@ z^6-Q3Ks~wIF*j~e$fth&BA|+@PAJ?O%4B$v~_DpN8hG^h+WYe-Sn=z3e`=*oGHyC$Z zo>5H$spo+l5eG_iBLu{j8|1&v_|O=jyinVZ0L}Gp*7XKtlRglbo+hbgfhVZ`{%?3N zx4RiT(O%c)10`r@RWy^F>TkPh2|(r7K~jWMb)7#H968N&#hb3 zC?X!0$|S~PR3fxh95lw?_U^dl>0O7R;6*i%JiWyM#H{>tKeK`-AqLqs?#JUV2!DKl zA2jfrefc80_@ySaS_v1sDubagw8^dtz9rf*{+;9GtsO{pZ?53C7EO}t-WecIMO+w- zX%lMOrk}#dUufapoTtQ{c-|6e5UNaM5+B{c1)y(fN>vje!>SK|^D-o3F8CPtjK<$u zdzbpufcDVY{5#j64tk03m)5cPgd(&zJ=-wT*q`dTeT*E{;}cohJyfBO)dW(Vb98y_ zb;yxQg_jz^^^lY^4pk}Nz1Ycp%h*#L^MWEO3MkyCsZ0rsmf4_b{6%skorWKBE z9n_ljor<`1ELW*S6J4zgrF6(d17?`n%->O&jgD zmr$yXDdW1LP2Y&B{R@b&9=71IN|>OSH$9{7(OeP3WO}tO7m0>1$$MHMoZp?iX!d(2@&BD1`tRNN-_qir5b~5}5vEUm z_rE2Ku|lO?-l`fRw9TuHIPKyFIPm{Zu>7CO>re75bXT||zRba&|5z(@5~)N0@S5$_ J+AH4o{sx=JX)gc( diff --git a/docs/application/dotnet/guides/personal/media/oauth2_implicit.png b/docs/application/dotnet/guides/personal/media/oauth2_implicit.png deleted file mode 100644 index e78dee8eb6fe157d8a2727eb5901cd72b4b28f70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14499 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 azaUY`*zjh@04OX3sVHbX%6;(k&Hn-!rTIhv diff --git a/docs/application/dotnet/guides/personal/media/oauth2_password.png b/docs/application/dotnet/guides/personal/media/oauth2_password.png deleted file mode 100644 index 0bdd463d95560da8f5df667ea6e8480a5dc5ce2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8539 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 -## Authorization Grant - -An authorization grant is a credential representing the resource owner's authorization (to access its protected resources) used by the client to obtain an access token. - -The specification defines the following 4 grant types as well as an extensibility mechanism for defining additional types: - -- Authorization code - - The [authorization code is obtained](#req_code) by using an authorization server as an intermediary between the client and resource owner. Instead of requesting authorization directly from the resource owner, the client directs the resource owner to an authorization server, which in turn directs the resource owner back to the client with the authorization code. - - The authorization code provides some important security benefits, such as the ability to authenticate the client, as well as the transmission of the access token directly to the client without passing it through the resource owner's user-agent and potentially exposing it to others, including the resource owner. - - **Figure: Authorization code flow** - - ![Authorization code flow](./media/oauth2_auth_code.png) - -- Implicit - - In the implicit flow, the client is issued an access token directly (as a result of the resource owner authorization). The grant type is implicit, as no intermediate credentials (such as an authorization code) are issued. - - Implicit grants improve the responsiveness and efficiency of some clients (such as a client implemented as an in-browser application), since it reduces the number of round trips required to obtain an access token. - - **Figure: Implicit grant flow** - - ![Implicit grant flow](./media/oauth2_implicit.png) - -- Resource owner password credentials - - The resource owner password credentials (such as username and password) can be used directly as an authorization grant to obtain an access token. - - Even though this grant type requires direct client access to the resource owner credentials, the resource owner credentials are used for a single request and are exchanged for an access token. This grant type can eliminate the need for the client to store the resource owner credentials for future use, by exchanging the credentials with a long-lived access token or refresh token. - - **Figure: Resource owner password credentials flow** - - ![Resource owner password credentials flow](./media/oauth2_password.png) - -- Client credentials - - The client credentials can be used as an authorization grant when the authorization scope is limited to the protected resources under the control of the client, or to protected resources previously arranged with the authorization server. Client credentials are typically used as an authorization grant when the client is acting on its own behalf (the client is also the resource owner) or is requesting access to protected resources based on an authorization previously arranged with the authorization server. - - **Figure: Client credentials flow** - - ![Client credentials flow](./media/oauth2_client_credentials.png) - -To request an access token for the implicit, resource owner password credentials, or client credentials grant type, follow the [direct access token request instructions](#direct_token). - -## Prerequisites - -To enable your application to use the OAuth 2.0 functionality: - -1. To use the [Tizen.Account.OAuth2](https://samsung.github.io/TizenFX/latest/api/Tizen.Account.OAuth2.html) namespace, the application has to request permission by adding the following privilege to the `tizen-manifest.xml` file: - - ``` - - http://tizen.org/privilege/internet - - ``` - -2. To use the methods and properties of the Tizen.Account.OAuth2 namespace, include it in your application: - - ``` - using Tizen.Account.OAuth2; - ``` - -> **Note** -> The use cases in this guide refer to an `OAuth2Helper` class, which is a user-created class whose purpose is to handle various OAuth2 requests. - - -## Creating and Managing an OAuth 2.0 Request - -To make a request with the OAuth 2.0 manager: - -1. Create an OAuth2 request: - - ``` - var request = OAuth2Helper.CreateCodeGrantAuthRequest(true); - ``` - -2. Set the parameters needed for making the request. - - You can set various request properties, such as end points for authentication and token, grant type, client credentials, scopes, authentication scheme, user name, and password. - - ``` - internal const string GOOGLE_AUTH_URL = "https://accounts.google.com/o/oauth2/auth"; - internal const string GOOGLE_TOK_URL = "https://accounts.google.com/o/oauth2/token"; - internal const string GOOGLE_REDIRECT_URL = "https://localhost:8080"; - internal const string GOOGLE_CLIENT_ID = "12345678901.apps.googleusercontent.com"; - internal const string GOOGLE_CLIENT_SECRET = "1ABCD-E2FG3hijkL4MNOp5Qr"; - internal const string GOOGLE_SCOPE = "email"; - internal const string USER_NAME = "username"; - internal const string PASSWORD = "password"; - - internal static CodeGrantAuthorizationRequest CreateCodeGrantAuthRequest() - { - return new CodeGrantAuthorizationRequest() - { - AuthorizationEndpoint = new Uri(GOOGLE_AUTH_URL), - RedirectionEndPoint = new Uri(GOOGLE_REDIRECT_URL), - TokenEndpoint = new Uri(GOOGLE_TOK_URL), - ClientSecrets = new ClientCredentials() - { - Id = GOOGLE_CLIENT_ID, - Secret = GOOGLE_CLIENT_SECRET - }, - Scopes = new string[] {GOOGLE_SCOPE}, - State = "DCEEFWF45453sdffef424" - }; - } - - internal static CodeGrantTokenRequest CreateCodeGrantTokenRequest() - { - return new CodeGrantTokenRequest() - { - RedirectionEndPoint = new Uri(GOOGLE_REDIRECT_URL), - TokenEndpoint = new Uri(GOOGLE_TOK_URL), - ClientSecrets = new ClientCredentials() - { - Id = GOOGLE_CLIENT_ID, - Secret = GOOGLE_CLIENT_SECRET - }, - Scopes = new string[] {GOOGLE_SCOPE}, - Code = GOOGLE_AUTH_GRANT_CODE, - AuthenticationScheme = AuthenticationScheme.RequestBody, - }; - } - ``` - -3. When you no longer need it, free the request by setting it to `null`: - - ``` - public static void Destroy() - { - request = null; - } - ``` - - -## Requesting the Server for a Grant or Token - -To obtain the required authorization code or access token: - -- Request the authorization code. - - The authorization code grant type is used to obtain both access tokens and refresh tokens. It is a redirection-based flow that requires the client to interact with the server and receive the incoming requests (through redirection) from the authorization server. - - To request the authorization code, use the `AuthorizeAsync()` method of the [Tizen.Account.OAuth2.CodeGrantAuthorizer](https://samsung.github.io/TizenFX/latest/api/Tizen.Account.OAuth2.CodeGrantAuthorizer.html) class: - - ``` - public static async Task AuthorizeAsync_CHECK_EXCEPTION() - { - /// Precondition - /// 1. Valid CodeGrantAuthorizer object - /// 2. Prepared CodeGrantAuthorizationRequest parameters - - var authorizer = new CodeGrantAuthorizer(); - Assert.IsNotNull(authorizer, "Object should not be null after construction"); - - var request = OAuth2Helper.CreateCodeGrantAuthRequest(); - Assert.IsNotNull(request, "Object should not be null after construction"); - - /// Test case - try - { - var response = await authorizer.AuthorizeAsync(request); - Assert.IsTrue(false, "Expected to throw an exception"); - } - - catch (Exception ex) - { - Assert.IsTrue(ex is OAuth2Exception, "Wrong exception thrown. Expected is OAuth2Exception"); - } - - /// Postcondition - authorizer.Dispose(); - } - ``` - -- Request the access token. - - Access tokens are credentials used to access protected resources. An access token is a string representing an authorization issued to the client. Tokens represent specific access scopes and durations, granted by the resource owner, and enforced by the resource server and authorization server. - - - Request the access token with the authorization code. - - In the authorization code grant type, instead of requesting authorization directly from the resource owner, the client directs the resource owner to an authorization server, which in turn directs the resource owner back to the client with the authorization code. - - 1. [Request the authorization code](#req_code) with the `AuthorizeAsync()` method. The authorization code is returned in a callback. - 2. Use the authorization code to request the access token by calling the `GetAccessTokenAsync()` method: - - ``` - public static async Task GetAccessTokenAsync_CHECK_EXCEPTION() - { - /// Precondition - /// 1. Valid CodeGrantAuthorizer object - /// 2. Prepared CodeGrantTokenRequest parameters - - var authorizer = new CodeGrantAuthorizer(); - Assert.IsNotNull(authorizer, "Object should not be null after construction"); - - var request = OAuth2Helper.CreateCodeGrantTokenRequest(); - Assert.IsNotNull(request, "Object should not be null after construction"); - - /// Test case - try - { - var response = await authorizer.GetAccessTokenAsync(request); - Assert.IsTrue(false, "Expected to throw an exception"); - } - - catch (Exception ex) - { - Assert.IsTrue(ex is OAuth2Exception, "Wrong exception thrown. Expected is OAuth2Exception"); - } - - /// Postcondition - authorizer.Dispose(); - } - ``` - - - Request the access token directly. - - You can request an access token in a single step without obtaining the authorization code explicitly. For the authorization code grant type, the code is obtained after the authentication and passed to the server to obtain the access token internally. For the implicit, resource owner password credentials, and client credentials grant types, you can obtain the access token directly. - - To obtain the access token directly, use the `GetAccessTokenAsync()` method. The response from the server is included in a callback. - - ``` - internal static ResourceOwnerPwdCredentialsTokenRequest CreateRoPwdTokenRequest() - { - return new ResourceOwnerPwdCredentialsTokenRequest() - { - TokenEndpoint = new Uri(GOOGLE_TOK_URL), - ClientSecrets = new ClientCredentials() - { - Id = GOOGLE_CLIENT_ID, - Secret = GOOGLE_CLIENT_SECRET - }, - AuthenticationScheme = AuthenticationScheme.RequestBody, - Username = "user name", - Password = "password", - RedirectionEndPoint = new Uri(GOOGLE_REDIRECT_URL), - State = "state" - }; - } - - public static async Task GetAccessTokenAsync_CHECK_EXCEPTION() - { - /// Precondition - /// 1. Valid ResourceOwnerPwdCredentialsAuthorizer object - /// 2. Prepared ResourceOwnerPwdCredentialsTokenRequest parameters - - var authorizer = new ResourceOwnerPwdCredentialsAuthorizer(); - Assert.IsNotNull(authorizer, "Object should not be null after construction"); - - var request = OAuth2Helper.CreateRoPwdTokenRequest(); - Assert.IsNotNull(request, "Object should not be null after construction"); - - /// Test case - try - { - var response = await authorizer.GetAccessTokenAsync(request); - Assert.IsTrue(false, "Expected to throw an exception"); - } - - catch (Exception ex) - { - Assert.IsTrue(ex is OAuth2Exception, "Wrong exception thrown. Expected is OAuth2Exception"); - } - - /// Postcondition - authorizer.Dispose(); - } - - internal static ClientCredentialsTokenRequest CreateClientCredsTokenRequest(bool dummy = false) - { - return new ClientCredentialsTokenRequest() - { - TokenEndpoint = new Uri(GOOGLE_TOK_URL), - RedirectionEndPoint = new Uri(GOOGLE_REDIRECT_URL), - AuthenticationScheme = AuthenticationScheme.Basic, - ClientSecrets = new ClientCredentials() - { - Id = GOOGLE_CLIENT_ID, - Secret = GOOGLE_CLIENT_SECRET - } - }; - } - - public static async Task GetAccessTokenAsync_CHECK_EXCEPTION() - { - /// Precondition - /// 1. Valid ClientCredentialsAuthorizer object - /// 2. Prepared ClientCredentialsTokenRequest parameters - - var authorizer = new ClientCredentialsAuthorizer(); - Assert.IsNotNull(authorizer, "Object should not be null after construction"); - - var request = OAuth2Helper.CreateClientCredsTokenRequest(); - - Assert.IsNotNull(request, "Object should not be null after construction"); - - /// Test case - try - { - var response = await authorizer.GetAccessTokenAsync(request); - Assert.IsTrue(false, "Expected to throw an exception"); - } - - catch (Exception ex) - { - Assert.IsTrue(ex is OAuth2Exception, "Wrong exception thrown. Expected is OAuth2Exception"); - } - - /// Postcondition - authorizer.Dispose(); - } - ``` - -- Refresh the access token. - - Refresh tokens are credentials used to obtain access tokens. Refresh tokens are issued to the client by the authorization server and are used to obtain a new access token when the current access token becomes invalid or expires, or to obtain additional access tokens with an identical or narrower scope. - - To refresh an access token, use the `RefreshAccessTokenAsync()` method of the [Tizen.Account.OAuth2.ClientCredentialsAuthorizer](https://samsung.github.io/TizenFX/latest/api/Tizen.Account.OAuth2.ClientCredentialsAuthorizer.html) class. The response from the server is included in a callback. - - ``` - internal static RefreshTokenRequest CreateRefreshTokenRequest() - { - return new RefreshTokenRequest() - { - TokenEndpoint = new Uri(GOOGLE_REFRESH_TOKEN_URL), - ClientSecrets = new ClientCredentials() - { - Id = GOOGLE_CLIENT_ID, - Secret = GOOGLE_CLIENT_SECRET - }, - AuthenticationScheme = AuthenticationScheme.Basic, - RedirectionEndPoint = new Uri(GOOGLE_REDIRECT_URL), - RefreshToken = "AQkAQHKoQRyhc7nlxuk4ecr8MC_7kUoBQxCXQ8PpH3u2VNq2KP96UMrCrrav.aO6gHMVhTeeJt_6PVAUqmP5bQSxH8GWp2sO" - }; - } - - public static async Task RefreshAccessTokenAsync_CHECK_EXCEPTION() - { - /// Precondition - /// 1. Valid ResourceOwnerPwdCredentialsAuthorizer object - /// 2. Prepared ResourceOwnerPwdCredentialsTokenRequest parameters - - var authorizer = new ResourceOwnerPwdCredentialsAuthorizer(); - Assert.IsNotNull(authorizer, "Object should not be null after construction"); - - var request = OAuth2Helper.CreateRefreshTokenRequest(); - Assert.IsNotNull(request, "Object should not be null after construction"); - - /// Test case - try - { - var response = await authorizer.RefreshAccessTokenAsync(request); - Assert.IsTrue(false, "Expected to throw an exception"); - } - catch (Exception ex) - { - LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, ex.ToString()); - Assert.IsTrue(true, "Exception should be thrown"); - } - - /// Postcondition - authorizer.Dispose(); - } - ``` - - -## Managing an OAuth 2.0 Response - -The response from the server is returned as an instance of the [Tizen.Account.OAuth2.AuthorizationResponse](https://samsung.github.io/TizenFX/latest/api/Tizen.Account.OAuth2.AuthorizationResponse.html) class, from which all the various response parameters can be obtained. - -To manage the OAuth 2.0 response: - -1. Retrieve the response parameters from the response. - - You can get various response information, such as the authorization code, state, and custom value. - - ``` - public static async Task RetrieveResponseInfo() - { - /// Precondition - /// 1. Valid CodeGrantAuthorizer object - /// 2. Prepared CodeGrantAuthorizationRequest parameters - /// 3. Request for authorization grant - - string code; - string state; - - var authorizer = new CodeGrantAuthorizer(); - - var request = OAuth2Helper.CreateCodeGrantAuthRequest(); - - /// Test case - try - { - var response = await authorizer.AuthorizeAsync(request); - - Console.WriteLine("Code: {0}", response.Code); - Console.WriteLine("State: {0}", response.State); - Console.WriteLine("custom data: {0}", response.GetCustomValue("key1")); - } - - catch (Exception ex) - { - LogUtils.Write(LogUtils.DEBUG, LogUtils.TAG, ex.ToString()); - } - - /// Postcondition - authorizer.Dispose(); - } - ``` - -2. Handle response errors. - - If the created request is incorrect or missing required permissions, the server response contains an error. Retrieve the error information from the response to check the issue, using the `Error` property of the created [Tizen.Account.OAuth2.OAuth2Exception](https://samsung.github.io/TizenFX/latest/api/Tizen.Account.OAuth2.OAuth2Exception.html) instance: - - ``` - public static async Task RetrieveServerErrorCode() - { - /// Precondition - /// 1. Valid ResourceOwnerPwdCredentialsAuthorizer object - /// 2. Prepared ResourceOwnerPwdCredentialsTokenRequest parameters - - var authorizer = new ResourceOwnerPwdCredentialsAuthorizer(); - - var request = OAuth2Helper.CreateRoPwdTokenRequest(); - request.Username = "dummy"; - - /// Test case - try - { - var response = await authorizer.GetAccessTokenAsync(request); - } - - catch (Exception ex) - { - var exception = ex as OAuth2Exception; - var errorResponse = exception.Error; - } - ``` - -3. When you no longer need it, free the response handle with the `Dispose()` method: - - ``` - /// Postcondition - authorizer.Dispose(); - } - ``` - - -## Related Information -* Dependencies - - Tizen 4.0 and Higher From 6473e89abc8aac3d06c9b24ba1e16bbbccd85ec6 Mon Sep 17 00:00:00 2001 From: kamaljeet chauhan Date: Mon, 17 Aug 2020 15:14:52 +0530 Subject: [PATCH 2/7] review comments incorporated for PR:1206 --- docs/application/dotnet/guides/personal/authentication.md | 4 ---- docs/application/toc_all.md | 1 - 2 files changed, 5 deletions(-) diff --git a/docs/application/dotnet/guides/personal/authentication.md b/docs/application/dotnet/guides/personal/authentication.md index 228960305e..11c6ab1bbc 100644 --- a/docs/application/dotnet/guides/personal/authentication.md +++ b/docs/application/dotnet/guides/personal/authentication.md @@ -1,7 +1,6 @@ # Authentication and Authorization -The authentication and authorization features introduce how you can obtain access tokens using OAuth 2.0, and authenticate users using the FIDO framework. You can use the following authentication and authorization features in your .NET applications: @@ -9,9 +8,6 @@ You can use the following authentication and authorization features in your .NET You can use the FIDO Universal Authentication Framework to authenticate users. FIDO covers password-less authentications, such as fingerprint, iris, and voice. -- [OAuth 2.0](oauth.md) - - You can obtain an access token by using the OAuth 2.0 authorization. The OAuth 2.0 authorization framework enables you to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing you to obtain access on your own behalf. ## Related Information diff --git a/docs/application/toc_all.md b/docs/application/toc_all.md index a2f657a508..8ba1f25c99 100755 --- a/docs/application/toc_all.md +++ b/docs/application/toc_all.md @@ -186,7 +186,6 @@ #### Authentication and Authorization ##### [Overview](/application/dotnet/guides/personal/authentication.md) ##### [FIDO Universal Authentication Framework](/application/dotnet/guides/personal/fido.md) -##### [OAuth 2.0](/application/dotnet/guides/personal/oauth.md) #### [Calendar](/application/dotnet/guides/personal/calendar.md) #### [Contacts](/application/dotnet/guides/personal/contacts.md) #### [Phone Number Management](/application/dotnet/guides/personal/phonenumber.md) From 2d33edf06c16b01a5817a2c557bb632353391f95 Mon Sep 17 00:00:00 2001 From: kamaljeet chauhan Date: Thu, 20 Aug 2020 10:25:15 +0530 Subject: [PATCH 3/7] Review comments incorporated for PR-1206 --- docs/application/dotnet/guides/personal/overview.md | 4 ---- docs/application/dotnet/tutorials/app-filtering.md | 1 - 2 files changed, 5 deletions(-) diff --git a/docs/application/dotnet/guides/personal/overview.md b/docs/application/dotnet/guides/personal/overview.md index 30a060a8c6..2196220cce 100644 --- a/docs/application/dotnet/guides/personal/overview.md +++ b/docs/application/dotnet/guides/personal/overview.md @@ -13,10 +13,6 @@ You can use the following personal data features in your .NET applications: You can synchronize service application data between a server and the device by creating various sync jobs. -- [Authentication and Authorization](authentication.md) - - You can obtain an access token by using the OAuth 2.0 authorization. The OAuth 2.0 authorization framework enables you to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing you to obtain access on your own behalf. You can also use the FIDO Universal Authentication Framework to authenticate users. - - [Calendar](calendar.md) You can manage calendars, events, and tasks on a device. You can add, modify, and monitor calendar items, and set reminders for important items. You can also convert calendar items to the vCalendar format. diff --git a/docs/application/dotnet/tutorials/app-filtering.md b/docs/application/dotnet/tutorials/app-filtering.md index cbb1552f00..d05bd01411 100644 --- a/docs/application/dotnet/tutorials/app-filtering.md +++ b/docs/application/dotnet/tutorials/app-filtering.md @@ -162,7 +162,6 @@ The following tables show the available requirements for an application package. | `http://tizen.org/feature/network.wifi.direct.service_discovery` | Specify this key, if the application requires the Wi-Fi Direct service discovery feature. | 2.3 | | `http://tizen.org/feature/network.wifi.tdls` | Specify this key, if the application requires the Wi-Fi Tunneled Direct Link Setup (TDLS). | 3.0 | | `http://tizen.org/feature/nlp` | Specify this key, if the application requires the Natural Language Processing (NLP) API. | 5.0 | -| `http://tizen.org/feature/oauth2` | Specify this key, if the application requires the OAuth 2.0 protocol feature. | 4.0 | | `http://tizen.org/feature/opengles.version.1_1` | Specify this key, if the application requires OpenGL® ES version 1.1 at minimum. You can specify at most 1 OpenGL® ES version. If you specify multiple versions, only the highest one is considered. | 2.2.1 | | `http://tizen.org/feature/opengles.version.2_0` | Specify this key, if the application requires OpenGL® ES version 2.0. You can specify at most 1 OpenGL® ES version. If you specify multiple versions, only the highest one is considered. | 2.2.1 | | `http://tizen.org/feature/opengles.version.3_0` | Specify this key, if the application requires OpenGL® ES version 3.0. You can specify at most 1 OpenGL® ES version. If you specify multiple versions, only the highest one is considered. | 2.4 | From 8b5a180c4bd6379e51fc92e3b690fe8aacf11b7d Mon Sep 17 00:00:00 2001 From: kamaljeet chauhan Date: Thu, 20 Aug 2020 14:33:12 +0530 Subject: [PATCH 4/7] Modified authentication doc for aouth2 related changes --- docs/application/dotnet/guides/personal/authentication.md | 2 +- docs/application/dotnet/guides/personal/overview.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/application/dotnet/guides/personal/authentication.md b/docs/application/dotnet/guides/personal/authentication.md index 11c6ab1bbc..cef9845133 100644 --- a/docs/application/dotnet/guides/personal/authentication.md +++ b/docs/application/dotnet/guides/personal/authentication.md @@ -2,7 +2,7 @@ -You can use the following authentication and authorization features in your .NET applications: +You can use the following authentication features in your .NET applications: - [FIDO Universal Authentication Framework](fido.md) diff --git a/docs/application/dotnet/guides/personal/overview.md b/docs/application/dotnet/guides/personal/overview.md index 2196220cce..11fe6d81ec 100644 --- a/docs/application/dotnet/guides/personal/overview.md +++ b/docs/application/dotnet/guides/personal/overview.md @@ -13,6 +13,10 @@ You can use the following personal data features in your .NET applications: You can synchronize service application data between a server and the device by creating various sync jobs. +- [Authentication and Authorization](authentication.md) + + You can use the FIDO Universal Authentication Framework to authenticate users. The FIDO UAF authenticator abstraction layer provides a uniform API to FIDO clients enabling the use of authenticator-based cryptographic services for FIDO-supported operations. It provides a uniform lower-layer "authenticator plugin" API facilitating the deployment of multi-vendor FIDO UAF authenticators and their requisite drivers. The FIDO UAF authenticator is a secure entity, connected to or housed within the FIDO user devices, that can create key material associated with a relying party. The key can then be used to participate in FIDO UAF strong authentication protocols. + - [Calendar](calendar.md) You can manage calendars, events, and tasks on a device. You can add, modify, and monitor calendar items, and set reminders for important items. You can also convert calendar items to the vCalendar format. From 82921f13160104c0988920131f47d3f59eb0ec30 Mon Sep 17 00:00:00 2001 From: kamaljeet chauhan Date: Mon, 24 Aug 2020 11:45:57 +0530 Subject: [PATCH 5/7] incorporated review comments on PR-1206 --- docs/application/dotnet/guides/personal/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/application/dotnet/guides/personal/overview.md b/docs/application/dotnet/guides/personal/overview.md index 11fe6d81ec..00a6c0437f 100644 --- a/docs/application/dotnet/guides/personal/overview.md +++ b/docs/application/dotnet/guides/personal/overview.md @@ -15,7 +15,7 @@ You can use the following personal data features in your .NET applications: - [Authentication and Authorization](authentication.md) - You can use the FIDO Universal Authentication Framework to authenticate users. The FIDO UAF authenticator abstraction layer provides a uniform API to FIDO clients enabling the use of authenticator-based cryptographic services for FIDO-supported operations. It provides a uniform lower-layer "authenticator plugin" API facilitating the deployment of multi-vendor FIDO UAF authenticators and their requisite drivers. The FIDO UAF authenticator is a secure entity, connected to or housed within the FIDO user devices, that can create key material associated with a relying party. The key can then be used to participate in FIDO UAF strong authentication protocols. + You can authenticate users without entering password using FIDO Universal Authentication Framework. - [Calendar](calendar.md) From 77f1a38422b9329b5b69fdbd33425bbef18c4fd2 Mon Sep 17 00:00:00 2001 From: kamaljeet chauhan Date: Fri, 28 Aug 2020 13:44:59 +0530 Subject: [PATCH 6/7] incorporated review comments of PR-1206 --- docs/application/dotnet/guides/personal/overview.md | 4 ++-- docs/application/toc_all.md | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/application/dotnet/guides/personal/overview.md b/docs/application/dotnet/guides/personal/overview.md index 00a6c0437f..d6260180b2 100644 --- a/docs/application/dotnet/guides/personal/overview.md +++ b/docs/application/dotnet/guides/personal/overview.md @@ -13,9 +13,9 @@ You can use the following personal data features in your .NET applications: You can synchronize service application data between a server and the device by creating various sync jobs. -- [Authentication and Authorization](authentication.md) +- [FIDO Universal Authentication Framework](fido.md) - You can authenticate users without entering password using FIDO Universal Authentication Framework. + You can use the FIDO Authentication Framework to authenticate users. FIDO covers password-less authentication, such as fingerprint, iris, voice. - [Calendar](calendar.md) diff --git a/docs/application/toc_all.md b/docs/application/toc_all.md index 8ba1f25c99..e934d39b83 100755 --- a/docs/application/toc_all.md +++ b/docs/application/toc_all.md @@ -675,7 +675,6 @@ #### [Data Synchronization](/application/native/guides/personal/data-sync.md) #### Authentication and Authorization ##### [FIDO Universal Authentication Framework](/application/native/guides/personal/fido.md) -##### [OAuth 2.0](/application/native/guides/personal/oauth.md) #### [Calendar](/application/native/guides/personal/calendar.md) #### [Contacts](/application/native/guides/personal/contacts.md) #### [Phone Number Management](/application/native/guides/personal/phonenumber.md) From c1ca0570dfc3c55991f479168f90edd90631f19c Mon Sep 17 00:00:00 2001 From: chauhan321 <39993408+chauhan321@users.noreply.github.com> Date: Fri, 28 Aug 2020 14:45:07 +0530 Subject: [PATCH 7/7] Update toc_all.md --- docs/application/toc_all.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/application/toc_all.md b/docs/application/toc_all.md index 9df7d49dee..be2ef9acd1 100755 --- a/docs/application/toc_all.md +++ b/docs/application/toc_all.md @@ -517,8 +517,6 @@ ## [Samples](/development/sample/web) - - # Native Application