| · | Chunhai Feng, Sheheryar Arshad, Siwang Zhou, Dun Cao, Yonghe Liu. "Wi-multi: A Three-phase System for Multiple Human Activity Recognition with Commercial WiFi Devices" , IEEE Internet of Things Journal, 2019. |
| · | Sheheryar Arshad, Chunhai Feng, Ruiyun Yu, Liu Yonghe. "Leveraging Transfer Learning in Multiple Human Activity Recognition Using WiFi Signal" in Proc. IEEE WoWMoM 2019, |
| · | Dun Cao, Yonghe Liu, Xiaomin Ma, Jin Wang, Baofeng Ji, Chunhai Feng, and Jinxiu Si. "A Relay-node Selection on Curve Road in Vehicular Networks" , IEEE Access, 2019. |
| · | Dun Cao, Bin Zheng, Jin Wang, Baofeng Ji, and Chunhai Feng. "Design and Analysis of a General Relay-Node Selection Mechanism on Intersection in Vehicular Networks" , Sensors, 2018. |
| · | Dun Cao, Bin Zheng, Baofeng Ji, Zhengbao Lei, and Chunhai Feng. "A Robust Distance-Based Relay Selection for Message Dissemination in Vehicular Network" , Wireless Networks, 2018. |
| · | Chunhai Feng, Sheheryar Arshad, Ruiyun Yu, and Yonghe Liu. "Evaluation and Improvement of Activity Detection Systems with Recurrent Neural Network" in Proc. IEEE ICC 2018, Kansas City, MO, May 2018. |
| · | Sheheryar Arshad, Chunhai Feng, Israel Elujide, Siwang Zhou, and Yonghe Liu. "SafeDrive-Fi: A Multimodal and Device Free Dangerous Driving Recognition System Using WiFi" in Proc. IEEE ICC 2018, Kansas City, MO, May 2018. |
| · | Chunhai Feng, Sheheryar Arshad, and Yonghe Liu. "Mais: Multiple activity identification system using channel state information of wifi signals." in Proc. Springer WASA 2017, Guilin, China, June 2017. |
| · | Sheheryar Arshad, Chunhai Feng, Yonghe Liu, Yupeng Hu, Ruiyun Yu, Siwang Zhou, and Heng Li. "Wi-chase: A WiFi based human activity recognition system for sensorless environments." in Proc. IEEE WoWMoM 2017, Macau, China, June 2017. |
| · | Chunhai Feng, Ruhai Wang, Zhengguo Bian, Tyler Doiron, and Jianling Hu. "Memory dynamics and transmission performance of bundle protocol (BP) in deep-space communications." in IEEE Transactions on Wireless communications, 2015. |


Courses
Sign Up
Sign In
Sign Up
First Name
Last Name
Email Address
Password
Sign Up
Cancel
Already have a user account? Click here to
sign in
!


UX, Web Design
Front-end Development
Logo + Web Design + Dev
UX, Web Design + Dev
Branding
UX, UI Design + Dev


new Vault(apikey, region)
Initialize Vault API with an API key, and optional region (US, EU)
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
apikey |
string | You API key | |
region |
string | US | US/EU |
- Source:
Throws:
Error
Methods
addImage(id, image, type) → {Promise.<object>}
Add a document or face image into an existing vault entry
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
id |
string | Vault entry ID | |
image |
string | Image file path, base64 content or URL | |
type |
number | 0 | Type of image: 0 = document, 1 = person |
- Source:
Throws:
Error
Returns:
New image object
- Type
- Promise.<object>
delete(id) → {Promise.<object>}
Delete a single or multiple vault entries
Parameters:
| Name | Type | Description |
|---|---|---|
id |
* | Vault entry ID or array of IDs |
- Source:
Throws:
Error
Returns:
- Type
- Promise.<object>
deleteImage(vaultId, imageId) → {Promise.<object>}
Delete an image from vault
Parameters:
| Name | Type | Description |
|---|---|---|
vaultId |
string | Vault entry ID |
imageId |
string | Image ID |
- Source:
Throws:
Error
Returns:
- Type
- Promise.<object>
get(id) → {Promise.<object>}
Get a single vault entry
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Vault entry ID |
- Source:
Throws:
Error
Returns:
- Type
- Promise.<object>
list() → {Promise.<object>}
List multiple vault entries with optional filter, sorting and paging arguments
Parameters:
| Name | Type | Description |
|---|---|---|
options.filter |
Array | Array of filter statements, refer to https://developer.idanalyzer.com/vaultapi.html for filter construction |
options.orderby |
string | Field name used to order the results, refer to https://developer.idanalyzer.com/vaultapi.html for available fields |
options.sort |
string | Sort results by ASC = Ascending, DESC = DESCENDING |
options.limit |
number | Number of results to return |
options.offset |
number | Offset the first result using specified index |
- Source:
Throws:
Error
Returns:
- Type
- Promise.<object>
searchFace(image, maxEntry, threshold) → {Promise.<object>}
Search vault using a person's face image
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
image |
string | Face image file path, base64 content or URL | |
maxEntry |
number | 10 | Number of entries to return, 1 to 10. |
threshold |
number | 0.5 | Minimum confidence score required for face matching |
- Source:
Throws:
Error
Returns:
List of vault entries
- Type
- Promise.<object>
trainFace() → {Promise.<object>}
Train vault for face search
- Source:
Throws:
Error
Returns:
- Type
- Promise.<object>
trainingStatus() → {Promise.<object>}
Get vault training status
- Source:
Throws:
Error
Returns:
- Type
- Promise.<object>
update(id, data) → {Promise.<object>}
Update vault entry with new data
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Vault entry ID |
data |
object | Key-value pairs of the field name and its value |
- Source:
Throws:
Error
Returns:
- Type
- Promise.<object>


CSS3 Demos
We are going to showcase some cool CSS3 capabilities, in this page. We will add new demos as the time goes. So come visit from time to time to see new experiments with the hot CSS3 !!! Enjoy you reading, and don't hesitate to leave us a comment if you want to suggest a new experiment with CSS3.
Rounded corners (with border-radius):
The following paragraph, with dummy text has a rounded corners for the top-left and bottom-right corners
Velit lo-fi cornhole keytar, Echo Park 90's squid culpa. Velit in whatever, pork belly aliquip kitsch disrupt. Shabby chic DIY fanny pack, polaroid aute eu dolore kogi McSweeney's craft beer readymade asymmetrical. Whatever laborum sriracha fashion axe PBR&B Etsy. Food truck raw denim blog, disrupt narwhal fanny pack sint
Box shadow (with box-shadow):
The following paragraph, with dummy text has a box shadow
Velit lo-fi cornhole keytar, Echo Park 90's squid culpa. Velit in whatever, pork belly aliquip kitsch disrupt. Shabby chic DIY fanny pack, polaroid aute eu dolore kogi McSweeney's craft beer readymade asymmetrical. Whatever laborum sriracha fashion axe PBR&B Etsy. Food truck raw denim blog, disrupt narwhal fanny pack sint
Set transparency
The background color of the following paragraph will become transparent when you hover the paragraph:
Velit lo-fi cornhole keytar, Echo Park 90's squid culpa. Velit in whatever, pork belly aliquip kitsch disrupt. Shabby chic DIY fanny pack, polaroid aute eu dolore kogi McSweeney's craft beer readymade asymmetrical. Whatever laborum sriracha fashion axe PBR&B Etsy. Food truck raw denim blog, disrupt narwhal fanny pack sint
Multiple columns text
The following paragraph will be display in multiple column (we set column-count to 3 in this example) :
Velit lo-fi cornhole keytar, Echo Park 90's squid culpa. Velit in whatever, pork belly aliquip kitsch disrupt. Shabby chic DIY fanny pack, polaroid aute eu dolore kogi McSweeney's craft beer readymade asymmetrical. Whatever laborum sriracha fashion axe PBR&B Etsy. Food truck raw denim blog, disrupt narwhal fanny pack sint Velit lo-fi cornhole keytar, Echo Park 90's squid culpa. Velit in whatever, pork belly aliquip kitsch disrupt. Shabby chic DIY fanny pack, polaroid aute eu dolore kogi McSweeney's craft beer readymade asymmetrical. Whatever laborum sriracha fashion axe PBR&B Etsy. Food truck raw denim blog, disrupt narwhal fanny pack sint Velit lo-fi cornhole keytar, Echo Park 90's squid culpa. Velit in whatever, pork belly aliquip kitsch disrupt. Shabby chic DIY fanny pack, polaroid aute eu dolore kogi McSweeney's craft beer readymade asymmetrical. Whatever laborum sriracha fashion axe PBR&B Etsy. Food truck raw denim blog, disrupt narwhal fanny pack sint


F5 Identity and Access Management Solutions > Class 2: OAuth Federation with F5 Source | Edit on
Lab 1: Social Login Lab¶
Note
The entire module covering Social Login is performed on BIG-IP 1 (OAuth C/RS)
Purpose¶
This module will teach you how to configure a Big-IP as a client and resource server enabling you to integrate with social login providers like Facebook, Google, and LinkedIn to provide access to a web application. You will inject the identity provided by the social network into a header that the backend application can use to identify the user.
Task 1: Setup Virtual Server¶
Go to Local Traffic -> Virtual Servers -> Create
Enter the following values (leave others default)
- Name:
social.f5agility.com-vs
- Destination Address:
<IP_ADDRESS>
- Service Port:
443
- HTTP Profile:
http
- SSL Profile (Client):
f5agility-wildcard-self-clientssl
- Source Address Translation:
Auto Map
- Name:
Select webapp-pool from the Default Pool drop down and then click Finished
Test access to
https://social.f5agility.com
from the jump host’s browser.You should be able to see the backend application, but it will give you an error indicating you have not logged in because it requires a header to be inserted to identify the user.
Task 2: Setup APM Profile¶
Go to Access -> Profiles / Policies -> Access Profiles (Per Session Policies) -> Create
Enter the following values (leave others default) then click Finished
- Name:
social-ap
- Profile Type:
All
- Profile Scope:
Profile
- Languages: English
- Name:
Click Edit for social-ap, a new browser tab will open
Click the + between Start and Deny, select OAuth Logon Page from the Logon tab, click Add Item
Set the Type on Lines 2, 3, and 4 to none
Change the Logon Page, Input Field #1 to “Choose a Social Logon Provider”
Click the Values column for Line 1, a new window will open.
Alternatively, you may click [Edit] on the Input Field #1 Values line. Either item will bring you to the next menu.
Click the X to remove F5, Ping, Custom, and ROPC
Click Finished
Note
The resulting screen is shown
- Go to the Branch Rules tab and click the X to remove F5,
Ping, Custom, F5 ROPC, and Ping ROPC
Click Save
Click Apply Access Policy in the top left and then close the browser tab
Task 3: Add the Access Policy to the Virtual Server¶
Go to Local Traffic -> Virtual Servers -> social.f5agility.com-vs
Modify the Access Profile setting from none to social-ap and click Update
Test access to https://social.f5agility.com from the jump host again, you should now see a logon page requiring you to select your authentication provider. Any attempt to authenticate will fail since we have only deny endings.
Task 4: Google (Built-In Provider)¶
Setup a Google Project¶
Login at https://console.developers.google.com
Note
This portion of the exercise requires a Google Account. You may use an existing one or create one for the purposes of this lab
Click Create Project and give it a name like “OAuth Lab” and click Create
Note
You may have existing projects so the menus may be slightly different.
Note
You may have to click on Google+ API under Social APIs
Go to the Credentials section on the left side.
Note
You may have navigate to your OAuth Lab project depending on your browser or prior work in Google Developer
Click OAuth Consent Screen tab, fill out the product name with “OAuth Lab”, then click save
Go to the Credentials tab (if you are not taken there), click Create Credentials and select OAuth Client ID
Under the Create Client ID screen, select and enter the following values and click Create
- Application Type:
Web Application
- Name:
OAuth Lab
- Authorized Javascript Origins:
https://social.f5agility.com
- Authorized Redirect URIs:
https://social.f5agility.com/oauth/client/redirect
- Application Type:
Copy the Client ID and Client Secret to notepad, or you can get it by clicking on the OAuth Lab Credentials section later if needed. You will need these when you setup Access Policy Manager (APM).
Click Library in the left-hand navigation section, then select Google+ API under Social APIs or search for it
Click Enable and wait for it to complete, you will now be able to view reporting on usage here
For Reference: This is a screenshot of the completed Google project:
Configure Access Policy Manager (APM) to authenticate with Google¶
Configure the OAuth Server Object: Go to Access -> Federation -> OAuth Client / Resource Server -> OAuth Server and click Create
Enter the values as shown below for the OAuth Server and click Finished
- Name: Google
- Mode:
Client + Resource Server
- Type:
Google
- OAuth Provider:
Google
- DNS Resolver:
oauth-dns *(configured for you)*
- Client ID:
<Client ID from Google>
- Client Secret:
<Client Secret from Google>
- Client’s ServerSSL Profile Name:
apm-default-serverssl
- Resource Server ID:
<Client ID from Google>
- Resource Server Secret:
<Client Secret from Google>
- Resource Server’s ServerSSL Profile Name:
apm-default-serverssl
Configure the VPE for Google: Go to Access -> Profiles / Policies -> Access Profiles (Per Session Policies) and click Edit on
social-ap
, a new browser tab will openClick the + on the Google provider’s branch after the OAuth Logon Page
Select OAuth Client from the Authentication tab and click Add Item
Enter the following in the OAuth Client input screen and click Save
- Name:
Google OAuth Client
- Server:
/Common/Google
- Grant Type:
Authorization Code
- Authentication Redirect Request:
/Common/GoogleAuthRedirectRequest
- Token Request:
/Common/GoogleTokenRequest
- Refresh Token Request:
/Common/GoogleTokenRefreshRequest
- Validate Token Request:
/Common/GoogleValidationScopesRequest
- Redirection URI:
https://%{session.server.network.name}/oauth/client/redirect
- Scope:
profile
- Name:
Click + on the Successful branch after the Google OAuth Client
Select OAuth Scope from the Authentication tab, and click Add Item
Enter the following on the OAuth Scope input screen and click Save
- Name:
Google OAuth Scope
- Server:
/Common/Google
- Scopes Request:
/Common/GoogleValidationScopesRequest
- Name:
Click Add New Entry
- Scope Name:
https://www.googleapis.com/auth/userinfo.profile
- Request:
/Common/GoogleScopeUserInfoProfileRequest
- Scope Name:
- Click the + on the Successful branch after the
Google OAuth Scope object
- Select Variable Assign from the Assignment tab, and click
Add Item
Name it Google Variable Assign and click Add New Entry then change
Enter the following values and click Finished
Left Side:
- Type:
Custom Variable
- Security:
Unsecure
- Value:
session.logon.last.username
Right Side:
- Type:
Session Variable
- Session Variable:
session.oauth.scope.last.scope_data.userinfo.profile.displayName
- Type:
Review the Google Variable Assign object and click Save
Click Deny on the Fallback branch after the Google Variable Assign object, select Allow in the pop up window and click Save
Click Apply Access Policy in the top left and then close the tab
Test Configuration¶
Test by opening Chrome in the jump host and browsing to
https://social.f5agility.com
, select the provider and attempt logon.Note
You are able to login and reach the app now, but SSO to the app has not been setup so you get an application error.
Note
You may also be prompted for additional security measures as you are logging in from a new location.
Task 5: Facebook (Built-In Provider)¶
Setup a Facebook Project¶
Go to https://developers.facebook.com and Login
Note
This portion of the exercise requires a Facebook Account. You may use an existing one or create one for the purposes of this lab
If prompted click, Get Started and accept the Developer Policy. Otherwise, click Create App
Click Create App and name (Display Name) your app (Or click the top left project drop down and create a new app, then name it). Then click Create App ID.
Note
For example the Display Name given here was “OAuth Lab”. You may also be prompted with a security captcha
Click Get Started in the Facebook Login section (Or click + Add Product and then Get Started for Facebook)
From the “Choose a Platform” screen click on WWW (Web)
In the “Tell Us about Your Website” prompt, enter
https://social.f5agility.com
for the Site URL and click Save then click ContinueClick Next on the “Set Up the Facebook SDK for Javascript” screen
Click Next on the “Check Login Status” screen
Note
Additional screen content removed.
Click Next on the “Add the Facebook Login Button” screen
Click Facebook Login on the left side bar and then click Settings
For the Client OAuth Settings screen in the Valid OAuth redirect URIs enter
https://social.f5agility.com/oauth/client/redirect
and then click enter to create it, then Save ChangesClick Dashboard in the left navigation bar
Here you can retrieve your App ID and App Secret for use in Access Policy Manager (APM).
Screenshot of completed Facebook project
Note
If you want Facebook Auth to work for users other than the developer you will need to publish the project
Configure Access Policy Manager (APM) to authenticate with Facebook¶
Configure the OAuth Server Object: Go to Access -> Federation -> OAuth Client / Resource Server -> OAuth Server and click Create
Enter the values as shown below for the OAuth Server and click Finished
- Name:
Facebook
- Mode:
Client + Resource Server
- Type:
Facebook
- OAuth Provider:
Facebook
- DNS Resolver:
oauth-dns
(configured for you) - Client ID:
<App ID from Facebook>
- Client Secret:
<App Secret from Facebook>
- Client’s ServerSSL Profile Name:
apm-default-serverssl
- Resource Server ID: `` App ID from Facebook>``
- Resource Server Secret:
<App Secret from Facebook>
- Resource Server’s ServerSSL Profile Name:
apm-default-serverssl
- Name:
Configure the VPE for Facebook: Go to Access -> Profiles / Policies -> Access Profiles (Per Session Policies) and click Edit on
social-ap
, a new browser tab will openClick the + on the Facebook provider’s branch after the OAuth Logon Page
Select OAuth Client from the Authentication tab and click Add Item
Enter the following in the OAuth Client input screen and click Save
- Name:
Facebook OAuth Client
- Server:
/Common/Facebook
- Grant Type:
Authorization Code
- Authentication Redirect Request:
/Common/FacebookAuthRedirectRequest
- Token Request:
/Common/FacebookTokenRequest
- Refresh Token Request:
None
- Validate Token Request: `` /Common/FacebookValidationScopesRequest``
- Redirection URI:
https://%{session.server.network.name}/oauth/client/redirect
- Scope:
public_profile
(Note underscore)
- Name:
Click + on the Successful branch after the Facebook OAuth Client
Select OAuth Scope from the Authentication tab, and click Add Item
Enter the following on the OAuth Scope input screen and click Save
- Name:
Facebook OAuth Scope
- Server:
/Common/Facebook
- Scopes Request:
/Common/FacebookValidationScopesRequest
- Click Add New Entry
- Scope Name:
public_profile
- Request:
/Common/FacebookScopePublicProfile
- Name:
Click the + on the Successful branch after the Facebook OAuth Scope object
Select Variable Assign from the Assignment tab, and click Add Item
Name it Facebook Variable Assign and click Add New Entry then change
Enter the following values and click Finished
Left Side:
- Type:
Custom Variable
- Security:
Unsecure
- Value:
session.logon.last.username
Right Side:
- Type:
Session Variable
- Session Variable:
session.oauth.scope.last.scope_data.public_profile.name
- Type:
Review the Facebook Variable Assign object and click Save
Click Deny on the Fallback branch after the Facebook Variable Assign object, select Allow in the pop up window and click Save
Click Apply Access Policy in the top left and then close the tab
Test Configuration¶
Test by opening Chrome in the jump host and browsing to
https://social.f5agility.com
, select the provider and attempt logon.Note
You are able to login and reach the app now, but SSO to the app has not been setup so you get an application error.
Note
You may also be prompted for additional security measures as you are logging in from a new location
Note
You may need to start a Chrome New Incognito Window so no session data carries over.
You should be prompted to authorize your request. Click Continue as <Account> (Where <Account> is your Facebook Profile name)
Task 6: LinkedIn (Custom Provider)¶
Login at
https://www.linkedin.com/secure/developer
Note
This portion of the exercise requires a LinkedIn Account. You may use an existing one or create one for the purposes of this lab*
Click Create Application
In the Create a New Application screen fill in the required values and click Submit
Note
Generic values have been shown. You may use the values you deem appropriate
Note
An Application logo has been provided on your desktop ‘OAuth2.png’
In the “Authentication Keys” screen, check the boxes for
r_basicprofile
andr_emailaddress
. In the Authorized Redirect URLs, enterhttps://social.f5agility.com/oauth/client/redirect
Click Add. Finally, click Update at the bottom of the screen.
Configure Access Policy Manager (APM) to authenticate with LinkedIn¶
Configure the OAuth Server Object: Go to Access -> Federation -> OAuth Client / Resource Server -> Provider and click Create
Note
You are creating a “Provider”
Enter the values as shown below for the OAuth Provider and click Finished
- Name:
LinkedIn
- Type:
Custom
- Authentication URI:
https://www.linkedin.com/oauth/v2/authorization
- Token URI:
https://www.linkedin.com/oauth/v2/accessToken
- Token Validation Scope URI:
https://www.linkedin.com/v1/people/~
- Name:
Configure the OAuth Redirect Request Profile Object: Go to Access -> Federation -> OAuth Client / Resource Server -> Request and click Create
Enter the values as shown for the OAuth Request and click Finished
- Name:
LinkedInAuthRedirectRequest
- HTTP Method:
GET
- Type:
auth-redirect-request
- Name:
Add the following request parameters and click Add after entering the values for each:
- Parameter Type:
custom
- Parameter Name:
response_type
- Parameter Value:
code
- Parameter Type:
client-id
- Parameter Name:
client_id
- Parameter Type:
redirect-uri
- Parameter Name:
redirect_uri
- Parameter Type:
scope
- Parameter Name:
scope
Note
LinkedIn requires a state parameter, but we already insert it by default.
- Parameter Type:
Configure the OAuth Token Request Profile Object: Go to Access -> Federation -> OAuth Client / Resource Server -> Request and click Create
Enter the values as shown for the OAuth Request and click Finished
- Name:
LinkedInTokenRequest
- HTTP Method:
POST
- Type:
token-request
- Name:
Add the following request parameters and click Add after entering the values for each:
- Parameter Type:
grant-type
- Parameter Name:
grant_type
- Parameter Type:
redirect-uri
- Parameter Name:
redirect_uri
- Parameter Type:
client-id
- Parameter Name:
client_id
- Parameter Type:
client-secret
- Parameter Name:
client_secret
- Parameter Type:
Configure the OAuth Validation Scopes Request Profile Object: Go to Access -> Federation -> OAuth Client / Resource Server -> Request and click Create
Enter the values as shown for the OAuth Request and click Finished
- Name:
LinkedInValidationScopesRequest
- HTTP Method:
GET
- Type:
validation-scopes-request
- Name:
Add the following request parameters and click Add after entering the values for each:
- Parameter Type:
custom
- Parameter Name:
oauth2_access_token
- Parameter Value:
%{session.oauth.client.last.access_token}
- Parameter Type:
custom
- Parameter Name:
format
- Parameter Value:
json
- Parameter Type:
Configure the OAuth Scope Data Request Profile Object: Go to Access -> Federation -> OAuth Client / Resource Server -> Request and click Create
Enter the values as shown for the OAuth Request and click Finished
- Name:
LinkedInScopeBasicProfile
- HTTP Method:
GET
- URI:
https://api.linkedin.com/v1/people/~
- Type:
scope-data-request
- Name:
Add the following request parameters and click Add after entering the values for each:
- Parameter Type:
custom
- Parameter Name: `` oauth2_access_token``
- Parameter Value:
%{session.oauth.client.last.access_token}
- Parameter Type:
custom
- Parameter Name:
format
- Parameter Value:
json
- Parameter Type:
Configure the OAuth Server Object: Go to Access -> Federation -> OAuth Client / Resource Server -> OAuth Server and click Create
Enter the values as shown below for the OAuth Server and click Finished
- Name:
LinkedIn
- Mode:
Client + Resource Server
- Type:
Custom
- OAuth Provider:
LinkedIn
- DNS Resolver:
oauth-dns *(configured for you)*
- Client ID:
<App ID from LinkedIn>
- Client Secret:
<App Secret from LinkedIn >
- Client’s ServerSSL Profile Name:
apm-default-serverssl
- Resource Server ID:
<App ID from LinkedIn >
- Resource Server Secret:
<App Secret from LinkedIn >
- Resource Server’s ServerSSL Profile Name:
apm-default-serverssl
- Name:
Configure the VPE for LinkedIn: Go to Access -> Profiles / Policies -> Access Profiles (Per Session Policies) and click Edit on
social-ap
, a new browser tab will openClick on the link OAuth Logon Page as shown
Click on the Values area of Line #1 as shown. A pop-up window will appear
Click Add Option. In the new Line 3, type LinkedIn in both the Value and Text (Optional) fields and click Finished
Click on the Branch Rules tab of the OAuth Logon Page screen
Click Add Branch Rule. In the resulting new line enter LinkedIn for the Name field and click the Change link on the Expression line
Click Add Expression on the Simple tab
Select OAuth Logon Page in the Agent Sel: drop down. Select OAuth provider type from the Condition drop down. In the OAuth provider field enter LinkedIn and then click Add Expression
Click Finished on the Simple Expression tab
Click Save on the completed Branch Rules tab
Click the + on the LinkedIn provider’s branch after the OAuth Logon Page
Note
If not still in the VPE: Go to Access -> Profiles / Policies -> Access Profiles (Per Session Policies). Click Edit on social-ap, a new browser tab will open*
Select OAuth Client from the Authentication tab and click Add Item
Enter the following in the OAuth Client input screen and click Save
- Name:
LinkedIn OAuth Client
- Server:
/Common/LinkedIn
- Grant Type:
Authorization Code
- Authentication Redirect Request:
/Common/LinkedInAuthRedirectRequest
- Token Request:
/Common/LinkedInTokenRequest
- Refresh Token Request:
None
- Validate Token Request:
/Common/LinkedInValidationScopesRequest
- Redirection URI:
https://%{session.server.network.name}/oauth/client/redirect
- Scope:
r_basicprofile *(Note underscore)*
- Name:
Click + on the Successful branch after the LinkedIn OAuth Client
Select OAuth Scope from the Authentication tab, and click Add Item
Enter the following on the OAuth Scope input screen and click Save
- Name:
LinkedIn OAuth Scope
- Server:
/Common/LinkedIn
- Scopes Request:
/Common/LinkedInValidationScopesRequest
- Click Add New Entry
- Scope Name:
r_basicprofile
- Request:
/Common/LinkedInScopeBasicProfile
- Name:
Click the + on the Successful branch after the LinkedIn OAuth Scope object
Select Variable Assign from the Assignment tab, and click Add Item
Name it LinkedIn Variable Assign and click Add New Entry then change
Enter the following values and click Finished
Left Side:
- Type:
Custom Variable
- Security:
Unsecure
- Value:
session.logon.last.username
Right Side:
- Type:
Session Variable
- Session Variable:
session.oauth.scope.last.firstName
- Type:
Review the LinkedIn Variable Assign object and click Save
Click Deny on the Fallback branch after the LinkedIn Variable Assign object, select Allow in the pop up window and click Save
Click Apply Access Policy in the top left and then close the tab
Test Configuration¶
Test by opening Chrome in the jump host and browsing to
https://social.f5agility.com
, select the provider and attempt logon.Note
You are able to login and reach the app now, but SSO to the app has not been setup so you get an application error.
Note
You may also be prompted for additional security measures as you are logging in from a new location.
Note
You may need to start a Chrome New Incognito Window so no session data carries over.
You will be prompted to authorize your request. Click Allow.
Task 7: Add Header Insertion for SSO to the App¶
In this task you will create a policy that runs on every request. It will insert a header into the serverside HTTP Requests that contains the username. The application will use this to identify who the user is, providing Single Sign On (SSO).
Configure the Per Request Policy¶
Go to Access -> Profiles/Policies -> Per Request Policies and click Create
Enter prp-x-user-insertion the Name field and click Finished
Click Edit on the prp-x-user-insertion policy line
Click the + symbol between Start and Allow
Under the General Purpose tab select HTTP Headers and click Add Item
Under the HTTP Header Modify section, click Add New Entry to add the following two headers and then click Save
- Header Operation:
replace
- Header Name:
X-User
- Header Value:
%{session.logon.last.username}
- Header Operation:
replace
- Header Name:
X-Provider
- Header Value:
%{session.logon.last.oauthprovidertype}
Note
Replace instead of Insert has been selected for Header Operation to improve security. A malicious user might insert their own X-User header. As using Insert would simply add another header. Using Replace will add a header if it does not exist, or replace one if it does.
You do not need to Apply Policy on per request policies. You may simply close the browser tab
- Header Operation:
Add the Per Request Policy to the Virtual Server¶
Go to Local Traffic -> Virtual Servers and click on
social.f5agility.com-vs
Scroll to the Access Policy section of the Virtual Server and select
prp-x-user-insertion
from the Per-Request Policy drop down. Scroll to the bottom of the page and click Update
Test Configuration¶
Go to https://social.f5agility.com in your browser and logon using one of the social logon providers. This time you should see your name appear in the top right corner. You can also click “Headers” in the webapp and look at the headers presented to the client. You will see x-user present here with your name as the value. You’ll also see the x-provider header you inserted indicating where the data is coming from.


Thinking of hiring a business plan consultant? They can help you polish your business plan to perfection and help you understand the side of your investors. Their insights can contribute to an effective business arrangement plan.
learn moreEnter your text here


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
IN THE HIGH COURT OF JUDICATURE AT PATNA CRIMINAL MISCELLANEOUS No.18593 of 2019 Arising Out of PS. Case No.-17 Year-2019 Thana- BARUN District- Aurangabad ====================================================== Sunil Kumar, Son of Harihar Prasad, Resident of Village - Korariya, Chandauli, P.S.- Parav Ram Nagar, District- Varanasi ... ... Petitioner/s Versus 1. The State of Bihar 2. The Principal Secretary Cum Commissioner Department of Mines and Geology, Government of Bihar,Patna ... ... Opposite Party/s ====================================================== Appearance : For the Petitioner/s : Mr.Ravindra Kumar For the Opposite Party/s : Mr.Ajay Kumar Jha ====================================================== CORAM: HONOURABLE MR. JUSTICE RAJEEV RANJAN PRASAD ORAL ORDER
2 04-04-2019 Heard learned counsel for the petitioner and learned APP representing the State.
Petitioner is seeking anticipatory bail in connection with Barun P.S. Case No. 17 of 2019 registered for the offences punishable under Sections 147, 149, 341, 323, 308, 353, 379, 411 and 420 of the Indian Penal Code, Section 4/40 of the Bihar Mines and Minerals Concession Rules, 1972 and Section 15 of the Prevention of Pollution Act, 1986.
Learned counsel for the petitioner submits that the name of this petitioner has been involved in this case on mere suspicion that he was one of the drivers of two tractors on which the illegal sand was found loaded. It is submitted that there is no material to connect this petitioner with the present case. It is also submitted Patna High Court CR. MISC. No.18593 of 2019(2) dt.04-04-2019 2/2 that the owner of the tractor has already been granted anticipatory bail in Cr.Misc.No. 20205 of 2019 on 03.04.2019.
Learned APP for the State is present and has opposed the prayer for bail.
Considering the facts and circumstances of the case wherein nothing has been stated in the FIR making allegation against this petitioner and the owner of the tractor has already been granted anticipatory bail in Cr.Misc.No. 20205 of 2019 on 03.04.2019 and no other material has been brought to the notice of this Court to connect this petitioner in the present case and the submission is that his name has been involved on mere suspicion that he was one of the drivers of two tractors as also that the petitioner has no criminal antecedent, in case of arrest or surrender of the petitioner within a period of four weeks from today, the abovenamed petitioner shall be enlarged on bail on furnishing bail bond of Rs.15,000/- (rupees fifteen thousand) with two sureties of the like amount each to the satisfaction of the learned Chief Judicial Magistrate, Aurangabad in connection with Barun P.S. Case No. 17 of 2019, subject to the condition prescribed under Section 438(2) of the Cr.P.C.
(Rajeev Ranjan Prasad, J) arvind/-
U T


Using D3, we re-implemented some of the excellent REFViewer built by Jo Wood of the giCentre at City, University of London.
Research Excellence Framework (REF) scores represent the quality of research at each UK institution using the 2008 assessment. Darker green colours of the bar chart represent higher quality research scores either as a proportion of submitted staff ('Scale by staff %') or by the volume of staff submitted ('Scale by staff counts'). Toggle the buttons below to animate changes.


The U.S. Bureau of Labor Statistics projects a positive employment percent change of 31.4 between 2020 through 2030 for Data Scientists. According to the Economic News Release published on September 8, 2021, the demand for new products associated with the Internet of Things (IoT), and for analyzing and interpreting large datasets are expected to contribute to fast employment growth for occupations which include statisticians, information security analysts, and data scientists. Search Google to learn more.
Join us to explore more about the evolution of Data Scientists.
Discover More


Source code for horizon.views
# Copyright 2012 Nebula, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from django import shortcuts
from django import template
from django.utils import encoding
from django.views import generic
import horizon
from horizon import exceptions
[docs]class PageTitleMixin(object):
"""A mixin that renders out a page title into a view.
Many views in horizon have a page title that would ordinarily be
defined and passed through in get_context_data function, this often
leads to a lot of duplicated work in each view.
This mixin standardises the process of defining a page title, letting
views simply define a variable that is rendered into the context for
them.
There are cases when page title in a view may also display some context
data, for that purpose the page_title variable supports the django
templating language and will be rendered using the context defined by the
views get_context_data.
"""
page_title = ""
[docs] def render_context_with_title(self, context):
"""This function takes in a context dict and uses it to render the
page_title variable, it then appends this title to the context using
the 'page_title' key. If there is already a page_title key defined in
context received then this function will do nothing.
"""
if "page_title" not in context:
con = template.Context(context)
# NOTE(sambetts): Use force_text to ensure lazy translations
# are handled correctly.
temp = template.Template(encoding.force_text(self.page_title))
context["page_title"] = temp.render(con)
return context
[docs] def render_to_response(self, context):
"""This is an override of the default render_to_response function that
exists in the django generic views, this is here to inject the
page title into the context before the main template is rendered.
"""
context = self.render_context_with_title(context)
return super(PageTitleMixin, self).render_to_response(context)
[docs]class HorizonTemplateView(PageTitleMixin, generic.TemplateView):
pass
[docs]def user_home(request):
"""Reversible named view to direct a user to the appropriate homepage."""
return shortcuts.redirect(horizon.get_user_home(request.user))
[docs]class APIView(HorizonTemplateView):
"""A quick class-based view for putting API data into a template.
Subclasses must define one method, ``get_data``, and a template name
via the ``template_name`` attribute on the class.
Errors within the ``get_data`` function are automatically caught by
the :func:`horizon.exceptions.handle` error handler if not otherwise
caught.
"""
[docs] def get_data(self, request, context, *args, **kwargs):
"""This method should handle any necessary API calls, update the
context object, and return the context object at the end.
"""
return context
[docs] def get(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
try:
context = self.get_data(request, context, *args, **kwargs)
except Exception:
exceptions.handle(request)
return self.render_to_response(context)


This is a card panel with a teal lighten-2 class
This is a card panel with a pink darken-2 class
Título


This action is not reversible.


{% extends "layout.html" %} {% block sidebar1 %}{% endblock %} {% block bsrelbar1 %}{% endblock %} {% block bsrelbar2 %}{% endblock %} {% block sidebarsearch %}{% endblock %} {% set title = 'Download' %} {% block content %}
This is a bugfix release. It fixes several small problems with initial setup and configuration, and makes it easier to manage settings.
Read the installation instructions in the documentation for help with installing it.
A detailed change log is available in the documentation.
This is the first release of Ralph.


Cyclops VFX is very easy to configure to make it work the way you want. Built for artists by artists.
Polyphemus is the web platform that connects people together. When collaboration becomes easy with no frontiers.
Want to be involved? Nothing more easy! Our Github page is open to everyone who wants to be involved at making Cyclops VFX more awesome!
Cyclops uses a Jira instance for tracking issues and tasks.


Roulette Casino
Welcome to the roulette board. Type your name and start the play.
Add a device
Add a new device
Name:
Type:
Appliance
Electronics
Lights
Other
Description:
Add player details
Manage user data:
Player Nick:
Budget:
Add bets
Manage user bets:
Bet type:
STRIGHTUP
SPLIT
STREET
CORNER
FIVE
SIXLINE
COLUMN1
COLUMN2
COLUMN3
DOZEN1
DOZEN2
DOZEN3
EVEN
ODD
HALF1
HALF2
BLACK
RED
fields:
value:
Currently connected devices:
Players on the board:
Player bets:
Play state:


Priscilla Ungai ,Web Dev.
I am Priscilla Ungai,and here,you will get to know more about me and my experiences in different areas and activities that I have engaged in.
My Nationality is Kenya,also a Christian by religion,below I will talk about my education and hobbies.
| year | Attended |
|---|---|
| 2020 | Currently studying at Moringa School |
| 2018-2019 | Kenya National Library Services(KNLS) |
| 2014-2017 | Shadrack K.Secondary School |
| 2005-2013 | Olympic Primary School |
I attended Olympic Secondary School and got 280/500 at the end of my Kenya Certificate of Primary Education(K.C.P.E).
In Secondary School I managed to score a grade of D(plain) after which I joined Kenya National Library Services to study Computer and have the required skills.
As I was going through some researches on Youtube,I saw an advert on Sofware Skills by Moringa School.I got interested and applied for a chance to join the School.
| Name | Telephone-Number |
|---|---|
| Gerald Litunda |<PHONE_NUMBER> |
| George Otieno |<PHONE_NUMBER> |
Description
A site that advertise the Island Resort and monitors all its activities.
Description
This is a site that explains more on health and fitness as we are dealing with this pandemic of Corona Virus.
Description
A site that describes my Pet and its characters
Description
A website that deals with fake news
Description
It is a site that deals in advertising audio components and entertainment/events.


[1]
level/top floor room away from all noise , and made our wishes clearly known at check-in .
[2]
specifically asked for a room -/: the noise from ac unit on roof was unbelievably awful .


| ID |
Barman Login Time |
Cashup Time |
Start Cash |
End Cash |
Total Sale |
Cash Taken By Manager |
Cash Taken By Boss |
Comment |
Cashup User |
Opening User |
Restaurant |
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{cashup.id}} | {{cashup.barmanLoginTime | date:'medium'}} | {{cashup.cashupTime | date:'medium'}} | {{cashup.startCash}} | {{cashup.endCash}} | {{cashup.totalSale}} | {{cashup.cashTakenByManager}} | {{cashup.cashTakenByBoss}} | {{cashup.comment}} | {{cashup.cashupUser?.id}} | {{cashup.openingUser?.id}} |
|


Man dies after incident near Ballarat
Homicide detectives are investigating the death of a man, understood to have happened at a hotel near Ballarat.
Homicide detectives are investigating the death, which is understood to have happened at a hotel in Creswick – about an hour west of Melbourne.
MORE TO COME


Select the drop-down text below to see diagrams of the options.
This diagram shows a minimal installation of unblu in a corporate IT infrastructure without a reverse proxy (and no unblu filter). While this setup would give you secure co-browsing there would be no dynamic injection of the unblu snippet, making your system less efficient than it might otherwise be. Also, without the unblu rendering service you would not be able to define the scope of your co-browsing sessions as easily nor would you be able to share documents with visitors. With no video/audio service defined your agents would not be able to talk to visitors face-to-face.
This diagram shows the architecture with a reverse proxy and the unblu filter. In this case you have reduced network overhead as the snippet only runs when a session is started, thus saving precious resources. This design also provides you with Resource History data and in-context sessions, as well as general advantages regarding security.
This diagram outlines the architecture with the reverse proxy, the unblu filter, and the unblu rendering service all deployed. The Rendering Service enables document sharing and universal co-browsing.
This is a pictorial representation of the architecture with the tokbox video and audio chat deployed. See Video and Audio Requirements for more on the video/audio chat feature.


Javascript Game
Wanna play a game?... After finishing up the beginner's JS tutorial on Scott's site, I wrote a little JS game that you can invoke with the button below. I should add a couple more maybe later on.
Wanna play a game?... After finishing up the beginner's JS tutorial on Scott's site, I wrote a little JS game that you can invoke with the button below. I should add a couple more maybe later on.
SVG graphics can be used as drop-in replacements for most non-photographic images such as logos or graphics. These should be used whenever possible because they are based on calculated vectors, so they scale infinitely with no loss of definition. You don't have to have multiple versions of your images to support different UIs.
SVGs are nothing more than XML, and are rendered by the browser. You can pop them open and read/modify the contents, or even paste the SVG code directly in an HTML document. If you do it this way, it's called an "inline SVG". Inline SVGs are nice because you can style them using CSS like you would any other DOM element in your site.
Custom data attributes can be used to add custom pieces of data to existing elements. They are completely ignored and unhandled by the browser, so we are left to implement functionality with them ourselves. We usually do this with Javascript.
For example, say I have this figure here:
I have added a custom addritbute to it that looks like this:
data-hidden-message="X marks the spot!"
With some Javascript, I can read that value from a selected element, and do something with it, like show an alert message. Click on it and try it out.
You can use Miro Video Converter from the last scene to convert between video formats for the same type of experience we just discussed for video.
Use these attributes in the video tag:
Check out this cool site on the NY Times for some HTML 5 video inspiration.
Simple form, lots of input. Go!
The above is a figure tag. Herrr is a link to the spec:
HTML5 Figure
We can use this for images, SVGs, code snippets, charts, or other visual things. They usually have captions on them for clarity.
This is the main content of the blog post! It is an article tag. Herrr's the link: HTML5 Article
This is a really interesting tag. Apparently, its symantic meaning is: "a self-contained composition in a document, page, application, or site, which is intended to be independently distributable or reusable (e.g., in syndication). Examples include: a forum post, a magazine or newspaper article, or a blog entry."
Sounds perfect, right?...
In the upper right is a time element. Herr is that link too: HTML5 Time
This time element allows the browser to understand that the value inside of the "datetime" parameter is the true date and time associated with this article. I'm still not quite sure what the use of that is.It also seems pretty manual.. maybe there is a way to use it dynamically or something.
The "pubdate" parameter is a boolean that tells the browser even further that this is the date at which the article was actually published. Not sure what I can do with that yet.