Presentation is loading. Please wait.

Presentation is loading. Please wait.

Weekly OpenADE Meeting Notes Tuesday, November 18, 2014.

Similar presentations


Presentation on theme: "Weekly OpenADE Meeting Notes Tuesday, November 18, 2014."— Presentation transcript:

1 Weekly OpenADE Meeting Notes Tuesday, November 18, 2014

2 OpenADE Task Force Topics Green Button Connect My Data Testing and Certification (target fall 2014) – Complete function block descriptions – Complete test case requirements – Amend DMD test requirements if gaps are discovered in dry run or other process Issues Raised and Implementation Questions – How to use BR=bulkID with application to account and account groupings, as well as, large ThirdParty collections of Authorizations. –  Service Request 83 – including Function Block for optional customer info (service point address, etc.) – Service Request 84 – having scope selection screen on Data Custodian Site vs 3 rd Party site (need to write up description) – Service Request 85 – Duplicating TOU and CPP from ReadingType to IntervalReading as in SEP 2.0 – Service Request 86 – Desire to add digital signature to Green Button data to protect against tamper. New Resources for OpenADE Exchange requested – Tariff Model Resource –  Customer Information Resource

3 Topics GBCMD Testing and Certification RetailCustomer schema – PII Ids in resources Third Party Portal penny test and how it relates to GBCMD test February Event – The Birth of the Green Button Ecosystem Irregular interval data Scope Selection in Oauth – namespacing? How to constrain the meaning of Scope parameter for Oauth when there may be other Oauth based services coexisting on the AuthorizationServer UsagePoint relationships – aggregation of submeters, etc… Query Parameters that don’t match up exactly with data Interpretation of Quality Flags for UsageSummary, ReadingType, and IntervalReading ReadingType attributes? Quality of Reading value 19 service request added Use of ElectricPowerUsageSummary -> UsageSummary -> Supporting billing directly and with multiple utilities. – What is best practice for ElectricPowerUsageSummary, ElectricPowerQualitySummary Service request #85 Duplicating TOU and CPP from ReadingType to IntervalReading as in SEP 2.0 Correlation IDs for REST messages

4 CMD T&C

5 T&C Plan Now (10/14/2014) Tests defined Test implemented Any needed adjustments to testees code February Event 11/18

6 GreenButton Connect My Data Conformance Testing Requirements Review For Review FB_03 Core GB CMD FB_39 PUSH model-REST Notifications/bulk transfer FB_34 SFTP for bulk FB_35 REST for Bulk FB_13 Security FB_14 Authorization and Authentication Not yet ready for review FB_19 Partial data update FB_40 Offline RetailCustomer authorization FB_37 Query parameters

7 CMD Test Development Plan Phase I - 11/17/2014..11/21/2014 – Ron/Don Complete Spreadsheet with Test Requirements and Test Steps. – In parallel John/Marty get scheduled with consenting Data Custodians for an initial test – GET ServiceStatus which requires a target URL and a client_access_token for a preconfigured test Third Party. Phase II - 11/19/2014..11/26/2014 – OpenADE/OpenESPI Participants review test requirements and procedures and report by exception – Don/Ron are building tests Phase III – 12/1/2014..12/31/2014 – Don/Ron are building tests – John/Marty are running tests with consenting Data Custodians

8 Set UUT Into Test Harness Harness acts as a TP – Need test third party account At least three Test Accounts – Two authorized for this third party – One known and authorized for any other third party Create / Exchange ApplicationInformation for Test TP Create / Exchange – TP client_access_token – TP registration_access_token – Two Subscription access_token (may included OAuth authorization process) – Third subscription access_token (not owned by TP and used in negative tests)

9 Access Tokens Reference: http://www.greenbuttondata.org/espi/access_tokens/ http://www.greenbuttondata.org/espi/access_tokens/ ACUDR access_token client_access_token upload_access_token (used only in FB 45) datacustodian_access_token (used only in FB_33) registration_access_token refresh_token ?

10 GBCMD Testing and Certification Status Test Project and Harness – Need to add target UUT configuration and refactor tests FB_3 Core Green Button Connect My Data – Status: Initial set of tests complete; need more negative cases and results analysis FB_13 Security and Privacy – Status: Initial set of test complete; need to adjust to test harness and needs some small enhancements FB_14 Authorization and Authentication – Status: Repertoire of test cases initially identified by Don Coffin and they need to be reviewed and implemented … implementation begun FB_19 Partial Update Data – Status: not started FB_37 Query Parameters – Status: not started FB_39 PUSH Model – Status: not started

11 CMD Test Development Plan References All the test development is being done on the https://github.com/energyos/OpenESPI- GreenButtonCMDTest project, and, https://github.com/energyos/OpenESPI- GreenButtonCMDTest The test requirements and test procedures maintained in the spreadsheet at https://github.com/energyos/OpenESPI- GreenbuttonDataSDK/tree/master/GreenButtonTestingReq uirements.https://github.com/energyos/OpenESPI- GreenbuttonDataSDK/tree/master/GreenButtonTestingReq uirements You can enter issues for discussion on either project as you see appropriate. – For Test Code Issues: https://github.com/energyos/OpenESPI- GreenButtonCMDTest/issueshttps://github.com/energyos/OpenESPI- GreenButtonCMDTest/issues – For Test Requirements Issues: https://github.com/energyos/OpenESPI- GreenbuttonDataSDK/issues https://github.com/energyos/OpenESPI- GreenbuttonDataSDK/issues

12 RETAIL CUSTOMER

13 Object Identification Objects are instances of classes Objects need to be identified uniquely because – Data in a repository needs to be identified as to where it came from – Updates to data (for example from raw to validated) need to identify that it’s the same data that has been updated – Devices from which data originates often needs to be associated with the data – Devices need to be labeled multiple ways for various purposes – e.g. in a building topology (2 nd floor floodlight), in an electrical hierarchy (branch 2 load 3)

14 Master resource identifier issued by a model authority. The mRID is globally unique within an exchange context. Global uniqeness is easily achived by using a UUID for the mRID. It is strongly recommended to do this. The Name class provides the means to define any number of human readable names for an object. The name can be further attributed by a NameType and a NameTypeAuthority. IEC 61970 IdentifiedObject A simple string to identify the object.

15 IdentifiedObject mRID – usually a UUID that represents the object instance name – simple string to identify the object Name – a class that allows additional names to be used for the same object in different hierarchies. – different naming authorities may have the right to name devices for their own purposes – it is important to identify the naming authority and naming convention (type) – These must also be properties of the object to which they represent since it is the same unique object

16 ESPI Mapping of IdentifiedObject to Atom ESPI endpoints expose resources as described by Atom, IETF RFC 4287. Representations are identified as media type “application/atom+xml” ESPI namespace and types (“http://naesb.org/espi”) are used for objects in element espi:mRID is implemented by atom:id – UUIDs are used, as specified in IETF RFC 4122 espi:description is implemented by atom:title atom:published and atom:updated are used Associated objects use atom:link (rel=“related”) espi:name is implemented a resource.name

17 Solutions to Add Customer Account Numbers Add link Add Atom Extension Extend each Class with IdentifiedObject.name Make non- obfuscatedId

18 Account/Agreement Topology

19 Separation of PII containing Resource RetailCustomer from Subscription* Key New Resource Existing Resource Non-Resource Class *This data structure is to be developed on an aggressive schedule based on HelpDesk issue #83 and PAP10 NAESB Std REQ.18. No single API request can retrieve both PII and Anonymous data RetailCustomer UsagePoint EndDeviceAsset ServiceLocation PostionPoint PricingStructure Customer Agreement Authorization ServiceSupplier Normal ESPI Resources Subscription Anononymous EUI PII Containing information CustomerAccount

20 Model UsagePoints of RetailCustomer Location of premise Account ID Sub Account (SA) ID—Service Agreement / Account is name depending on utility Customer name, nickname (or short name) Address and info SDG&E provides only email address and UPID correspondence csv email and UsagePoint ID (Customer Obfuscated Key) MeterID ServicePointId Pnode LoadAggregationPoint, SubloadAggregationPoint Climate zone Account open date Account close date SA Open and Close date MDM Agent Id (who does meter read) ServiceSupplierId EnergyServiceProviderId (may be same as service supplier) Demand Response Provider May need list of Ids for service providers rather than explicit?? (0..* relationship{role, href}) Related assets ???? For example pool pump and pool pump participation in a program. Related programs ????

21 RetailCustomer API – GET.../resource/Batch/RetailCustomer/{id} – GET.../resource/RetailCustomer/{id} – … – GET.../resource/RetailCustomer/{id}/CustomerAccount/{id}/CustomerAgreement/{id} – GET.../resource/CustomerAgreement/{id} – GET.../resource/Batch/BulkRetailCustomerInfo/{id} Authorization – Scope string addition? RCInfo=AC where – A=Address included, C=AccountInfo included RCBulkId=123 for access to account info in bulk – Access tokens to access? Individual with access_token, bulk with client_access_token FB – Has RetailCustomer – Just one FB_4X with RCInfo – Has Additional Detail indicated by content of RCInfo

22 February Event – Preliminary Planning Celebrate: “Birth of the Green Button Ecosystem” – Testing and Certification Complete for DMD/CMD – UCAIug ITCA fully established – Initial Data Custodians successfully certified for DMD and CMD – Shower Successful T&C Adopters with Fame and Congratulations Venue and participation TBD in coming weeks

23 Best Practice Reading Quality Flags ReadingType.defaultQuality contains the default quality that applies to all corresponding IntervalReading data. IntervalReading.ReadingQuality.quality allows specific Intervals to override the default in ReadingType UsageSummary.qualityOfReading if present overrides default in ReadingType for those IntervalBlocks within the scope of the UsageSummary.billingPeriod If IntervalReading data are modified, DataCustodian should notify of this change so ThirdParty can retrieve the changes. If UsageSummary.qualityOfReading overrides the ReadingType or IntervalReadings, the IntervalReading qualities would change and a subsequent retrieval (not required) of the IntervalBlocks would come with the corresponding quality flag. The qualityOfReading flag for Usage Summary will indicate latest overriding quality of previously provided interval values corresponding to BillingPeriod dates The Default Quality (from ReadingTypeRef) for OverallConsumptionLastPeriod will indicate quality of total billed usage

24 Requests that are not inside authorization period Date of request April 5 Consensus: i – agree on 403 ii – agree on 403

25 FB3 - Core REST Services [R] GET resource/ApplicationInformation/{ApplicationInformationID} – [POS] Accept of valid request – [NEG] Reject by invalid ID – [NEG] Reject by invalid access-token – [POS] Results valid to schema and include required fields for OAuth and TP/DC interaction [C] GET resource/Authorization [C] GET resource/Authorization/{AuthorizationID} [A] GET resource/Batch/Subscription/{SubscriptionID} [C] GET resource/ReadServiceStatus POST: How to test for TP Notification – Trigger – Uses notification URI from ApplicationInformation – Expected content – at least one URI that can be GET’d?

26 Older or other slides Will build deck with new content over time.

27 FB_03 Core GB CMD Covers “core services”, resources and access control – atom:entry, atom:feed – GET, PUT, POST, DELETE (negative only) – ApplicationInformation – Authorization (feed) – Authorization (entry) – Subscription (entry) only available through batch/subscription – ReadServiceStatus (entry) – Access token expiration testing? – Authorization expiration? – Notification move to FB_39?

28 FB_03 Core GB CMD atom:entry / ApplicationInformation – Using required access token of R(registration_access_token) Verify successful GET and response contents (which subset of app info is required in the response?) – If it is required by OAuth2 dynamic registration it must be present – Other fields not derived from OAuth2? – i.e. ContactInfo used in the case of a failed notification to TP Verify negative response to PUT, POST, DELETE: 403 – forbidden – Using other access tokens(A,C) or none Verify negative response to GET, PUT, POST, DELETE: 403 – forbidden No token: 401 – unauthorized

29 FB_03 Core GB CMD atom:feed / Authorization – Using required access token of C(client_access_token) Verify successful GET and response contents (which subset of Authorization info is required in the response?) Verify negative response to PUT, POST, DELETE: 403 – forbidden – Using other access tokens (AR) or none Verify negative response to GET, PUT, POST, DELETE: 403 – forbidden No token: 401 – unauthorized

30 FB_03 Core GB CMD Authorization(C)- all fields(except error fields), some have of which have req. values Subscriptions(A) - feed with at least 1 UsagePoint ReadServiceStatus(C) – all fields with content of 0/1 – Using required access tokens Verify successful GET and response contents Verify negative response to PUT, POST, DELETE – TBD?: Using other access tokens or none Verify negative response

31 FB_39 Push Model – REST notifications Send Notification to TP – pre-test set up – DC needs to know TP stand-in URI (FB_33 could automate this?) – DC UT has manual “trigger method” to generate notification – ApplicationInformation – Authorization – Subscription Verify well-formed contents of the Notification Get the data (w/ correct access token) and validate the data [NEG] Test GET out of bounds and deferred response (should be moved to or is already present in other FB tests) – Authorization no longer valid (how?) – MOVE to FB_14 – Data no longer available (i.e. TP took too long for requesting the data) – SFTP error 2 ref to file that does not exist / REST GET error – Issue REST GET with wrong token (what token should the test use?) applies specifically to FB_39 to ensure notification data is secure [NEG] If TP Notify fails, verify by demonstration that failure was detected – TP is off-line

32 FB_34 SFTP for Bulk – Prerequisites Pre configured Authorizations Authorizations need bulk scope – Notification of Bulk sent to test harness i.e. sftp://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/Batch/Bulk/{BulkID} –Test harness retrieves data via SFTP –Validate the data Pass schema Must contain 1 feed w/ 1 or more entry(s) Verify there is a valid authorization for each entry and the scope of each authorization for each entry has BR=BulkId Use https://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/Authorization for list of authorizations to check againsthttps://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/Authorization –Is URI a pointer to a folder or a pointer to a file? –SFTP GETALL – could retrieve a set of files from a folder or –SFTP GET – single file

33 FB_35 REST for Bulk – Notification of Bulk Authorizations must be present Authorizations need bulk scope i.e. sftp://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/B atch/Bulk/{BulkID} –Test harness retrieves data via REST GET –Validate the data Pass schema 1 feed w/ 1 or more entry(s) Verify there is a valid authorization for each entry and the scope of each authorization for each entry has BR=BulkId Use https://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/ Authorization for list of authorizations to check against https://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/ Authorization

34 FB 13: Security Testing Cyber Security and Privacy Test Requirements – Based on Authorization.docx section 2.7 From SGIP SGCC Committee review of REQ.21 Reviewed with NIST Cyber Security staff NAESB REQ.21 section Initial set of test requirements on next slide

35 FB 13: Security Testing Initial Set of Test Requirements [TR_TC001] Test software shall issue a service request over an SSL session and shall verify that the response HTTP header contains the following fields and information – fields TBD [TR_TC002] Verify that REST request headers include – fields TBD [TR_TC003] Verify that the Data Custodian implements TLS 1.2. [TR_TC004] Verify that when communicating with a Retail Customer the Data Custodian negotiates the highest level of TLS mutually supported. [TR_TC005] Verify that when communicating with a Retail Customer the Data Custodian rejects TLS_RSA_WITH_NULL_SHA cipher suites. [TR_TC006] Verify that when communicating with a Retail Customer at a minimum the Data Custodian accepts the TLS_RSA_WITH_AES_128_CBC_SHA cipher suite. [TR_TC007] Verify that when communicating with a Third Party the Data Custodian negotiates the highest level of TLS mutually supported. [TR_TC008] Verify that the Data Custodian maintains an unexpired unrevoked RSA certificate with a public key length of at least 2048 bits.

36 FB 13: Security Testing Initial Set of Test Requirements [TR_TC009] Test software or manual inspection shall verify that the Data Custodian RSA certificate was issued by a Certificate Authority (CA) that has been successfully audited according to the criteria of ETSI or WebTrust. [TR_TC010] Test software or manual inspection shall verify that Tokens and IDs communicated by the Data Custodian are opaque and if based on actual Customer information that they are randomized using a secure method to protect privacy. [TR_TC011] Test software or manual inspection shall verify that Tokens and IDs communicated by the Data Custodian consist of at least 48 bits and can be the random number part of an RFC2422 UUID. [TR_TC012] Manual inspection of supporting documentation shall confirm that the Data Custodian implementation utilizes software libraries which are FIPS 140-2 level 1 or higher and listed on the CMVP website. [TR_TC013] Verify that the Third Party implements TLS 1.1 or higher. [TR_TC014] Verify that when communicating with a Retail Customer the Third Party negotiates the highest level of TLS mutually supported.

37 FB 13: Security Testing Initial Set of Test Requirements [TR_TC015] Verify that when communicating with a Data Custodian the Third Party negotiates the highest level of TLS mutually supported. [TR_TC016] Verify that the Third Party maintains an unexpired unrevoked RSA certificate with a public key length of at least 2048 bits. [TR_TC017] Test software or manual inspection shall verify that the Third Party RSA certificate was issued by a Certificate Authority (CA) that has been successfully audited according to the criteria of ETSI or WebTrust. [TR_TC018] Test software or manual inspection shall verify that Tokens and IDs communicated by the Third Party are opaque and if based on actual Customer information that they are randomized using a secure method to protect privacy. [TR_TC019] Test software or manual inspection shall verify that Tokens and IDs communicated by the Third Party consist of at least 48 bits and can be the random number part of an RFC2422 UUID. [TR_TC020] Manual inspection of supporting documentation shall confirm that the Third Party implementation utilizes software libraries which are FIPS 140-2 level 1 or higher and listed on the CMVP website.

38 FB_14: Authorization and Authentication (OAuth) Initial Set of Test Requirements [TR_OA001] Verify Data Custodian provides an Authorization Endpoint per OAuth 2.0 specification [TR_OA002] Verify Data Custodian provides a Token Endpoint per OAuth 2.0 specification [TR_OA004] Verify Data Custodian provides client with Third Party ID value per OAuth 2.0 specification [TR_OA005] Verify Data Custodian provides client with Third Party Secret value per OAuth 2.0 specification [TR_OA007] Verify Data Custodian rejects an Authorization Code Request with NO "Response Code" parameter [TR_OA008] Verify Data Custodian rejects an Authorization Code Request with NO "client_id" parameter [TR_OA009] Verify Data Custodian rejects an Authorization Code Request with NO "scope" parameter Check on “redirect_uri” parameter Check on “state” parameter [TR_OA010] Verify Data Custodian rejects an Authorization Code Request containing multiple "response_type" parameters [TR_OA011] Verify Data Custodian rejects an Authorization Code Request containing multiple "client_id" parameters [TR_OA012] Verify Data Custodian rejects an Authorization Code Request containing multiple "scope" parameters

39 FB_14: Authorization and Authentication (OAuth) Initial Set of Test Requirements [TR_OA013] Verify Data Custodian rejects an Authorization Code Request containing multiple "redirect_uri" parameters [TR_OA014] Verify Data Custodian rejects an Authorization Code Request containing multiple "state" parameters [TR_OA015] Verify Data Custodian rejects an Authorization Code Request containing an INVALID parameter [TR_OA016] Verify Data Custodian rejects an Authorization Code Request with an INVALID "Response Code" parameter [TR_OA017] Verify Data Custodian rejects an Authorization Code Request with an INVALID "client_id" parameter [TR_OA018] Verify Data Custodian rejects an Authorization Code Request with an INVALID "redirect_uri" parameter [TR_OA019] Verify Data Custodian rejects an Authorization Code Request with an INVALID "scope" parameter [TR_OA020] Verify Data Custodian properly validates Retail Customer while processing a valid Authorization Code Request [TR_OA021] Verify Data Custodian proper handles a Retail Customer who fails to pass authentication testing while processing a valid Authorization Code Request [TR_OA022] Verify Data Custodian properly obtains the Retail Customer's authorization for the Third Party to access their data while processing a valid Authorization Code Request [TR_OA023] Verify Data Custodian properly processes a Retail Customer's denial to allow a Third Party to access their data while processing a valid Authorization Code Request

40 FB_14: Authorization and Authentication (OAuth) Initial Set of Test Requirements [TR_OA024] Verify Data Custodian properly processes a Retail Customer's authorization to allow a Third Party to access their data while processing a valid Authorization Code Request [TR_OA027] Verify Data Custodian properly authenticates and accepts an Access Token Request with a valid HTTP BASIC Authorization header [TR_OA028] Verify Data Custodian rejects an Access Token Request with an INVALID HTTP BASIC Authorization header [TR_OA029] Verify Data Custodian properly authenticates the authorization_code contained in the "code=" parameter of an Access Token Request was issued to the "client_id" in the Access Token Request [TR_OA030] Verify Data Custodian accepts an Access Token Request containing an authorization_code ("code=" parameter) issued to the "client_id" in the Access Token Request [TR_OA031] Verify Data Custodian rejects an Access Token Request with NO "grant_type" parameter [TR_OA032] Verify Data Custodian rejects an Access Token Request with NO "code" parameter [TR_OA033] Verify Data Custodian rejects an Access Token Request with NO "redirect_uri" parameter [TR_OA034] Verify Data Custodian rejects an Access Token Request with NO "client_id" parameter

41 FB_14: Authorization and Authentication (OAuth) Initial Set of Test Requirements [TR_OA035] Verify Data Custodian rejects an Access Token Request with multiple "grant_type" parameters [TR_OA036] Verify Data Custodian rejects an Access Token Request with multiple "code" parameters [TR_OA037] Verify Data Custodian rejects an Access Token Request with multiple "redirect_uri" parameters [TR_OA038] Verify Data Custodian rejects an Access Token Request with multiple "client_id" parameters [TR_OA039] Verify Data Custodian rejects an Access Token Request with a "client_id" parameter and a HTTP BASIC authorization field [TR_OA040] Verify Data Custodian rejects an Access Token Request containing an authorization_code ("code=" parameter) NOT issued to the "client_id" in the Access Token Request [TR_OA041] Verify Data Custodian rejects an Access Token Request containing an INVALID authorization_code ("code=" parameter) [TR_OA042] Verify Data Custodian rejects an Access Token Request not containing a "redirect_uri" parameter if the original Authorization Request contained a "redirect_uri" parameter [TR_OA043] Verify Data Custodian rejects an Access Token Request containing a "redirect_uri" parameter if the "redirect_uri" does NOT match the "redirect_uri" parameter contained in the original Authorization Request parameter

42 FB_14: Authorization and Authentication (OAuth) Initial Set of Test Requirements [TR_OA044] Verify Data Custodian rejects an Access Token Request containing a "redirect_uri" parameter if the original Authorization Request did NOT contain a "redirect_uri" parameter [TR_OA045] Verify Data Custodian rejects an Access Token Request containing a previously used authorization_code [TR_OA046] Verify Data Custodian rejects an Access Token Request containing an expired authorization_code [TR_OA047] Verify Data Custodian issues a properly formatted Access Token Response (grant_type=authorization_code) [TR_OA050] Verify Data Custodian issues a properly formatted Access Token Response (grant_type=client _credentials) [TR_OA051] Verify Data Custodian rejects an Access Token Request with multiple "grant_type" parameters [TR_OA052] Verify Data Custodian rejects an Access Token Request with multiple "scope" elements [TR_OA053] Verify Data Custodian rejects an Access Token Request with an INVALID "scope" parameter [TR_OA056] Verify Data Custodian rejects a Refresh Token Request with NO "grant_type" parameter [TR_OA057] Verify Data Custodian rejects a Refresh Token Request with NO "refresh_token" parameter [TR_OA058] Verify Data Custodian rejects a Refresh Token Request with multiple "grant_type" parameters

43 FB_14: Authorization and Authentication (OAuth) Initial Set of Test Requirements [TR_OA059] Verify Data Custodian rejects a Refresh Token Request with multiple "refresh_token" parameters [TR_OA060] Verify Data Custodian rejects a Refresh Token Request with multiple "scope" parameters [TR_OA061] Verify Data Custodian properly authenticates and accepts a Refresh Token Request with a valid HTTP BASIC Authorization header [TR_OA062] Verify Data Custodian rejects a Refresh Token Request with a INVALID HTTP BASIC Authorization header [TR_OA063] Verify Data Custodian rejects a Refresh Token Request containing a "refresh_token" element that was NOT issued to the requesting Third Party Application [TR_OA064] Verify Data Custodian rejects a Refresh Token Request containing a "refresh_token" element that is expired [TR_OA065] Verify Data Custodian rejects a Refresh Token Request containing a "scope" element that does NOT match the "scope" element value used to obtain the original Access Token. [TR_OAxxx] Verify Data Custodian handling of expired Access Token and Refresh Token

44 FB_19: Partial update of data Is this requirement for upload role and not core data custodian?

45 [FB_37] Query Parameters Support published_min, published_max

46 [FB_40] Offline RetailCustomer Authorization Manual Creation of ApplicationInformation, Authorization(s)

47 ReadingType Attributes PG&E notices that their MDM uses various ReadingType attribute values that are not the same as those in the DMD test suite. Question – should meter data reflect the diversity of the meter system or the meaning of data conveyed to the ThirdParty Folks will look at their data and thinking further.

48 Interpretation of Quality Flags for UsageSummary, ReadingType, and IntervalReading ReadingType.defaultQuality contains the default quality that applies to all corresponding IntervalReading data. IntervalReading.ReadingQuality.quality allows specific Intervals to override the default in ReadingType If IntervalReading data or quality tags are modified, DataCustodian should notify of this change so ThirdParty can retrieve the changes. UsageSummary.qualityOfReading if present indicates that those IntervalBlocks within the scope of the UsageSummary.billingPeriod may have changed quality as well. Third Party may want to retrieve data again to see the revisions if any. The DC may indicate to the TP that IntervalBlock data has changed by sending a notification for the IntervalBlocks that changed.

49 Testing and Certification Issues Test Third Party role for testing DataCustodian Test accounts (how many ; real-or-not ; how much history?) Test Set up – Application Information How to put DC in reproducible state – reset? Minimum FBs to test – – FB_3, 13, 14, 19,37,39 Alternative – Test Environment that is same as the Live environment – Same Certs etc… – Does it need to be real data?

50 ElectricPowerUsageSummary Make general UsageSummary and deprecate ElectricPower one… Let query determine period not current/last How to rename fields to remove current/last ambiguity for past requests Determine what required fields might be and some possible new FB to support ecosystem interoperability Single Demand fields too limiting for modern tariffs.

51 UsageSummary Recommendataions Create new UsageSummary (which is NAESB REQ.18 name) Add new tags recommended by PG&E Retain all existing tags and make UsageSummary and ElectricPowerUsageSummary identical – but mark old one deprecated for backwards compatibility – new implementations will have to accept either Resource on input Revise descriptions of existing tags to make clear what goes with billing period etc. Provide documentation on how to interpret query parameters for GET UsageSummary

52 UsageSummary Use Cases I ask for summary today (with day later publishing) I ask for 3 months last year (query parameters?) Billing period is non-calendar John: I ask for an arbitrary period “roll-up” of consumption GET UsageSummary min=1/15/2014&max=2/28/2014&rollup=True – In PGE concept – you get 2 UsageSummarys – one for billing period January and one for billing period February – In John concept – you get 1 UsageSummary with totals for 1/15..2/28

53 Documentation Issues Do in GreenButtonAuthorization.docx section 2.4 – Use Cases for Authorization Termination (revocation) -- – DC-oriented control of termination process due regulatory requirements in Ca. Do in section 2.8 – Behavior of GET UsageSummary with query parameters

54 Service Request 83 – including Function Block for optional customer info (service point address, etc.) Requirements – UsagePoints of RetailCustomer – Location of premise – Account ID – Sub Account (SA) ID—Service Agreement / Account is name depending on utility – Customer name, nickname (or short name) – Address and info  from Lynn will provide more information – SDG&E provides only email address and UPID correspondence csv email and UsagePoint ID (Customer Obfuscated Key) – Current ESPI resources will never return PII – GET Subscription does not contain PII – Single Authorization covers entire Subscription and Authorization Scope – MeterID – ServicePointId – Pnode – LoadAggregationPoint, SubloadAggregationPoint – Climate zone – Account open date – Account close date – SA Open and Close date – MDM Agent Id (who does meter read) – ServiceSupplierId – EnergyServiceProviderId (may be same as service supplier) – Demand Response Provider – May need list of Ids for service providers rather than explicit?? (0..* relationship{role, href}) – Related assets ???? For example pool pump and pool pump participation in a program. – Related programs ???? Implementation – Resource Definition Probably multiple resources are good idea – REST service to exchange resource(s) GET only – Function Block(s) Wholesale vs Retail – Optionality vs Required – Possible Scope spec

55 For May 20 Topics Use Case for “verified for billing” – Added ServiceStatus – return data – Simple status or, outstanding batchlists – Consensus: Don’t really need this extension because the DC can determine if it wants to send a notification of what hasn’t been retrieved at its discretion. Revised Authorization document Use Case for Small ThirdParty / Mega ThirdParty … maybe another day in future revenue-quality data that is valid for billing purposes

56 Service Status Consensus: Don’t really need this extension because the DC can determine if it wants to send a notification of what hasn’t been retrieved at its discretion. As is in standard Enhanced to add current outstanding batchlist text 65535../espi/1_1/resource/Batch/Bulk/1?start-index=1&max-results=1000&published-max=2012-04-02T04:00:00Z&  published-min=2012-04-02T04:00:00Z 1

57 Authorization What happens when authorization changes – UsagePoints or period – When Authorization changes, place authorizationUri in notification to ThirdParty which can then re-establish its state

58 What can you negotiate with Scope? FBTerms – data content, CMD services ValueTerms – default durations and blocking, history length, subscription frequency (i.e. daily data cycle) ResourceTerms – specific resources available by api, bulkID assignments, bulkaccount Other?

59 Scope Negotiation DCTP HTTP Redirect with Scope={scope1} {scope2} … RC Logon Authorization request Scope={scope2} Authorization response Scope={scope2} access-token resourceUri authorizationUri referenceId … Oversimplified sequence diagram of Use Case #2 showing essence of scope negotiation

60 Scope issues Limit Scope to access-token and minimal exchange requirements Add list of UPs in a subsequent GET request – Could include UPs, optional location, additional data – We would define new resource that has this data Are there options? – FB_XX Minimum data – » UsagePoint – FB_XY Optional data » location Should it be a different namespace and XSD? – We need to make sure they are mutually exclusive – the usage and the PII containing data – Namespace and separate schema minimize the opportunity for comingling of data Single authorization with multiple UPs with different scopes – Don suggested that the scope is a union of capabilities. You need to get the data to see details – Jerry suggests scope be provided with UP?

61 CSV from GB Data XSLT Transform GBData.XML GreenButtonDa taStyleSheetCSV.xslt CSV File that opens in Excel

62 Notification DCTP HTTP POST Content-type: application/atom+xml

63 A Couple of Use Cases Use Case 1: How to do Gas and Electric in one Authorization – An Authorization – Two UsagePoints – One Gas One Electric – Different Scope Use Case 2: CISR based Authorization – Customer logs in has id for utility website – Each login has multiple electricity accounts – Each account can be multiple usage points – Customer login id becomes obfuscated {referenceId} which can be used in REST Uris of the form: /espi/1_1/resource/RetailCustomer/{referenceId}/** – Authorization enables a subcriptionID and authorizationID which is (internally) correlated to the customer and the subselection of usagepoints

64 Discussion on Authorization Structure Authorization enables the following URLs: http://localhost:8080/DataCustodian/espi/1_1/resource/Batch/Subscription/1 http://localhost:8080/DataCustodian/espi/1_1/resource/Authorization/1 /espi/1_1/resource/RetailCustomer/ /UsagePoint/... (SA == UsagePoint, CISR == subscription == authorization) with Access-token GET /espi/1_1/resource/RetailCustomer/ /UsagePoint urn:uuid:40BE6242-F7E6-4B51-828E-59B5FC0C35F0 a galaxy far, far away 0 2012-05-03T04:00:00Z...

65 Customer Information Resource Requirements – UsagePoints of RetailCustomer – Location of premise – Account ID – Sub Account (SA) ID -- Service Agreement / Account is name depending on utility – Customer name – SDG&E provides only email address and UPID correspondence csv email and UsagePoint ID (Customer Obfuscated Key) – Current ESPI resources will never return PII – GET Subscription does not contain PII – Single Authorization covers entire Subscription and Authorization Scope Implementation – Resource Definition – REST service to exchange resource(s) – Function Block – Possible Scope spec

66 NAESB REQ.18 Extended Customer Information This data is already part of the PAP10 parent model to ESPI – REQ.18 This data is part of CIM and associated with CustomerAgreement ServiceLocation may be equal to ServiceDeliveryPoint which is no longer in CIM

67 Common Information Model (CIM) Customer Overview IEC 61968 and IEC 61970

68 UsagePoint (from espiderived.xsd) Obfuscated tariff ID Obfuscated customerAgmtID

69 Possible Arrangement of Data “pulling the string” RetailCustomer UsagePoint EndDeviceAsset ServiceLocation PostionPoint TariffProfile Customer Agreement Authorization ServiceSupplier Key Account Resource Existing Resource ERP Resource Normal ESPI Resources

70 Possible Arrangement of Data “pulling the string” RetailCustomer UsagePoint EndDeviceAsset ServiceLocation PostionPoint TariffProfile Customer Agreement Authorization ServiceSupplier Key New Resource Existing Resource Non-resource included

71 FB3 - Core REST Services – [TR_CR003] Verify ReadServiceStatus returns “active” status

72 FB31 - Core REST Services – [TR_CR001] Verify the Authorization can be retrieved using the authorizationUri (from the authorization process in FB-14 or FB-40) – [TR_CR002] Verify the Authorization resource does not contain PII by inspection – [TR_CR003] Verify ReadServiceStatus returns “active” status – [TR_CR004] Verify Batch/Subscription/{subscriptionId} returns a valid Atom feed with all UsagePoints and related data including all interval data – [TR_CR005] Verify structured URIs are of the form {DataCustodianResourceEndpoint}[/{keyterm}/{id}]* based on the structure of Green Button APIs – [TR_CR006] Verify /RetailCustomer/{retailCustomerID}/UsagePoint Returns list of UsagePoints only under the Authorization – [TR_CR007] Verify Batch/RetailCustomer/{RetailCustomerId}/UsagePoint/{UsagePointId} Returns all data under and including a single UsagePoint – [TR_CR008] Verify that resources returned by the resourceUri are valid to the schema, proper linking, and verify that the data meets the test requirements based on PICS for content and consistency

73 FB 13: Security Testing Cyber Security and Privacy Test Requirements – Based on Authorization.docx section 2.7 From SGIP SGCC Committee review of REQ.21 Reviewed with NIST Cyber Security staff NAESB REQ.21 section Initial set of test requirements on next slide

74 Initial Set of Test Requirements [TR_TC001] Test software shall issue a service request over an SSL session and shall verify that the response HTTP header contains the following fields and information – fields TBD [TR_TC002] Verify that REST request headers include – fields TBD [TR_TC003] Verify that the Data Custodian implements TLS 1.2. [TR_TC004] Verify that when communicating with a Retail Customer the Data Custodian negotiates the highest level of TLS mutually supported. [TR_TC005] Verify that when communicating with a Retail Customer the Data Custodian rejects TLS_RSA_WITH_NULL_SHA cipher suites. [TR_TC006] Verify that when communicating with a Retail Customer at a minimum the Data Custodian accepts the TLS_RSA_WITH_AES_128_CBC_SHA cipher suite. [TR_TC007] Verify that when communicating with a Third Party the Data Custodian negotiates the highest level of TLS mutually supported. [TR_TC008] Verify that the Data Custodian maintains an unexpired unrevoked RSA certificate with a public key length of at least 2048 bits. [TR_TC009] Test software or manual inspection shall verify that the Data Custodian RSA certificate was issued by a Certificate Authority (CA) that has been successfully audited according to the criteria of ETSI or WebTrust. [TR_TC010] Test software or manual inspection shall verify that Tokens and IDs communicated by the Data Custodian are opaque and if based on actual Customer information that they are randomized using a secure method to protect privacy. [TR_TC011] Test software or manual inspection shall verify that Tokens and IDs communicated by the Data Custodian consist of at least 48 bits and can be the random number part of an RFC2422 UUID. [TR_TC012] Manual inspection of supporting documentation shall confirm that the Data Custodian implementation utilizes software libraries which are FIPS 140-2 level 1 or higher and listed on the CMVP website. [TR_TC013] Verify that the Third Party implements TLS 1.1 or higher. [TR_TC014] Verify that when communicating with a Retail Customer the Third Party negotiates the highest level of TLS mutually supported. [TR_TC015] Verify that when communicating with a Data Custodian the Third Party negotiates the highest level of TLS mutually supported. [TR_TC016] Verify that the Third Party maintains an unexpired unrevoked RSA certificate with a public key length of at least 2048 bits. [TR_TC017] Test software or manual inspection shall verify that the Third Party RSA certificate was issued by a Certificate Authority (CA) that has been successfully audited according to the criteria of ETSI or WebTrust. [TR_TC018] Test software or manual inspection shall verify that Tokens and IDs communicated by the Third Party are opaque and if based on actual Customer information that they are randomized using a secure method to protect privacy. [TR_TC019] Test software or manual inspection shall verify that Tokens and IDs communicated by the Third Party consist of at least 48 bits and can be the random number part of an RFC2422 UUID. [TR_TC020] Manual inspection of supporting documentation shall confirm that the Third Party implementation utilizes software libraries which are FIPS 140-2 level 1 or higher and listed on the CMVP website.

75 [FB_14] Authorization and Authentication (Oauth 2.0) – Verifying response to invalid authorization request (invalid access-token for resource) – Verify rejection of request missing access-token – Missing header parameters – Invalidation of access-token at end of authorization period

76 Function Blocks for CMD FunctionBlocks for Green Button Connect My DataDescription [FB_3] Core Green Button Connect My DataCore Services [FB_13] Security and Privacy classesHTTPS support [FB_14] Authorization and Authentication (Oauth 2.0)Oauth [FB_19] Partial update data IntervalBlocks without full data sets – e.g. just entrys containing IntervalBlocks [FB_31] Core Rest ServicesThird Party Access to Subscription/Authorization [FB_32] Resource Level RESTThird Party Access to UsagePoints, MeterReading, … and collections [FB_33] Management REST InterfacesGET PUT POST DELETE individual resources … [FB_34] SFTP for BulkOptionally support the SFTP delivery of Bulk for Bulk request [FB_35] REST for BulkSupport the REST request for Bulk [FB_36] Third Party (Client) Dynamic RegistrationUse Case 1 [FB_37] Query Parameters [FB_38] On Demand RequestsWithout Notification [FB_39] PUSH modelNotification followed by GET [FB_40] Offline RetailCustomer Authorization to Complement OAuth This is a out of band authorization process without the automated OAuth protocol exchange but producing the same artifacts. [FB_42] Third Party Core REST Services [FB_43] Third Party Management REST Services [FB_xx] Not a Function Block (Implementation Specific)Implementation Specific RESTful API [FB_44] Security and Privacy for Simple Third Party [FB_45] Security and Privacy for Certificate-based Third Party

77 Opaque vs Structured URIs No structure, support Opaque URIs using either HTTPS or FTPS protocols in conjunction with the espiDerived.xsd schema. Make Opaque URIs part of the CORE CMD function block.Opaque URIs espiDerived.xsdCORE CMD function block Optional support Structured URIs using either HTTPS or FTPS protocols: make Opaque URIs part of the CORE CMD function block, and structured URIs an optional Function Block in CMD Testing & Certification in conjunction with the espiDerived.xsd schemaCORE CMD function blockoptional Function BlockespiDerived.xsd Required Structure, make structured URIs a requirement but allow some variability – e.g. User versus RetailCustomer; Thus structured URIs would be part of the CORE CMD function block in CMD Testing & Certification in conjunction with the espiDerived.xsd schema.tructured URIs would be part of the CORE CMD function blockespiDerived.xsd Specific Required Structure based on espiDerived.xsd Resource Names as described in two documents: GreenButtonAtomLinks and Authorization document espiDerived.xsdGreenButtonAtomLinksAuthorization document

78 Changes in espiderived.xsd from espi.xsd *Enumerations: The largest volume of changes is in the explicit documentation of the many enumerations in the standard. In the standard, only a few examples from the IEC standard were provided in a comment. Values that distinguish measurements of Wh, W, VAr, VA, gas, water, etc… are tested for in DMD if corresponding FBs are indicated. *Errors of data type corrected – value, cost, and currency all had deficient data types that were recognized early on *Representation of conversion factors from UTC to Local Time: LocalTimeParameters resource was added *Missing overallConsumptionLastPeriod was added to make ElectricPowerUsageSummary rational as a record of billing period consumption Support for OAuth 2.0: the second largest volume of changes to the schemas is in support of CMD (no impact to DMD) * Differences tested for in T&C

79 Test Requirements for CMD Brainstorm FB31 - Core REST Services – Verify the authorization can be retrieved – Lack of PII – Ditto Batch/Subscription, Batch/RetailCustomer, and UsagePoint – Verify that resource returned is valid to schema and links are correct – Verify structured URIs – Verify all required content is present (based on PICs) – Could be FB_14 Verifying response to invalid authorization request (invalid access-token for resource) Verify rejection of request missing access-token Missing header parameters Invalidation of access-token at end of authorization period

80 For February 25 John Teeter raises issue of path vs opaque URIs for REST services for individual and subscription resources – Does the uri give any indication of what will be retrieved or not?

81 Some URIs Found In GBDMD Files URI ::= protocol://hostname:port/datacustodian/espi/1_1/resource/  resource endpoint of the server

82 Opaque URIs – No need to test structure – No need to recognize structure in sw Structured URIs – Easier to recognize the links – Easier to validate what you are doing by looking at them – If I have interval block, I know all the possible URIs for that UsagePoint Possible Outcomes of OpenADE Discussion? – No structure, support opaqueness – Optional Structure, make structured URIs an optional Function Block – Required Structure, make structured URIs a requirement but allow some variability – e.g. User versus RetailCustomer –  Single Required Structure – defined structure based roughly on GreenButtonAtomLinks and Authorization documents

83 SFTP for Bulk Transfer Pertinent to the SFTP discussion are the concepts that each Third Party has a defined relationship with the Data Custodian. – For automated exchange of information about his relationship there is a special Authorization obtained in Use Case #1 (see the Authorization.docx -- http://osgug.ucaiug.org/sgsystems/OpenADE/Shared%20Documents/Testing%20and%20Certification/GreenButtonTestPlan/ref erenceMaterial/GreenButtonAuthorization.docx). http://osgug.ucaiug.org/sgsystems/OpenADE/Shared%20Documents/Testing%20and%20Certification/GreenButtonTestPlan/ref erenceMaterial/GreenButtonAuthorization.docx – We anticipate that when the Data Custodian has data available, it sends an asynchronous Notification to the Third Party. – This Notification provides URIs of note that it is assumed the Third Party will want to retrieve. For the purposes of Bulk transfer, this URI will be: – sftp://hostname:port/DataCustodian/espi/1_1/resource/Batch/Bulk/{bulkId} sftp://hostname:port/DataCustodian/espi/1_1/resource/Batch/Bulk/{bulkId} – where {bulkId} is a unique identifier assigned by the Data Custodian and the balance of the URI is presented in the ApplicationInformation resource that both parties share (contains all relevant URIs and data for interchange via OAuth etc…). The Third Party would then retrieve the bulk data by using an SFTP client with that URI. This is a straw man concept for discussion on the call. Its advantage is that it in harmony with overall architecture of the Green Button Connect My Data RESTful architecture and simply adds SFTP as a means of transfer when a large data set is to be returned. Used to Retrieve the data using SFTP protocols – How to initiate the SSH connection? – What is the role if any of the client_credentials authorization to control access to SFTP enabled resources? Discussion – – After authorization of TP, they use Pene test, so what is benefit of access-token? – sftp user:pw, user=, password= Summary – sftp://hostname:port/DataCustodian/espi/1_1/resource/Batch/Bulk/{bulkId} sftp://hostname:port/DataCustodian/espi/1_1/resource/Batch/Bulk/{bulkId} – sftp user:pw, user=, password=

84 Function Blocks for CMD FunctionBlocks for Green Button Connect My DataDescription [FB_3] Core Green Button Connect My DataCore Services [FB_13] Security and Privacy classesHTTPS support [FB_14] Authorization and Authentication (OAuth)Oauth [FB_19] Partial update dataIntervalBlocks without full data sets (Ups,MR, …) [FB_31] Core Rest ServicesThird Party Access to Subscription/Authorization [FB_32] Resource Level REST Third Party Access to UsagePoints, MeterReading, … and collections [FB_33] Management REST InterfacesGET PUT POST DELETE individual resources … [FB_34] SFTP for Bulk Optionally support the SFTP delivery of Bulk for Bulk request [FB_35] REST for BulkSupport the REST request for Bulk [FB_36] Third Party (Client) Dynamic RegistrationUse Case 1 [FB_37] Query Parameters [FB_38] On Demand RequestsWithout Notification [FB_39] PUSH modelNotification followed by GET [FB_40] Offline Authorization to Complement OAuth [FB_42] Third Party Core REST Services [FB_43] Third Party Management REST Services [FB_xx] Not a Function Block (Implementation Specific)Implementation Specific RESTful API

85 Authorization Sequence – Scope – access-token – Refresh-token – resourceUri (the subscription) – authorizationUri – expiration of the access-token and refresh-token – token-type

86 Proposed CMD Function Blocks FunctionBlocks for Green Button Connect My DataDescription [FB_3] Core Green Button Connect My DataCore Services [FB_13] Security and Privacy classesHTTPS support [FB_14] Authorization and Authentication (OAuth)Oauth [FB_19] Partial update dataIntervalBlocks without full data sets (Ups,MR, …) [FB_31] Core Rest ServicesThird Party Access to Subscription/Authorization [FB_32] Resource Level RESTThird Party Access to UsagePoints, MeterReading, … and collections [FB_33] Management REST InterfacesGET PUT POST DELETE individual resources … [FB_34] SFTP for BulkOptionally support the SFTP delivery of Bulk for Bulk request [FB_35] REST for BulkSupport the REST request for Bulk [FB_36] Third Party (Client) Dynamic RegistrationUse Case 1 [FB_37] Query Parameters [FB_38] On Demand RequestsWithout Notification [FB_39] PUSH modelNotification followed by GET [FB_40] Offline Authorization to Complement OAuth NEED to Discuss [FB_42] Third Party Core REST Services [FB_43] Third Party Management REST Services [FB_xx] Not a Function Block (Implementation Specific)Implementation Specific RESTful API

87 Draft of API Allocations to FBs Function BlocksCRUDAPI URL [FB_3] Core Green Button Connect My DataGETresource/ReadServiceStatus [FB_31] Core Rest ServicesGETresource/ApplicationInformation/{ApplicationInformationID} [FB_31] Core Rest ServicesPUTresource/ApplicationInformation/{ApplicationInformationID} [FB_31] Core Rest ServicesDELETEresource/ApplicationInformation/{ApplicationInformationID} [FB_31] Core Rest ServicesGETresource/Authorization/{AuthorizationID} [FB_31] Core Rest ServicesPUTresource/Authorization/{AuthorizationID} [FB_31] Core Rest ServicesDELETEresource/Authorization/{AuthorizationID} [FB_31] Core Rest ServicesGETresource/Batch/Subscription/{SubscriptionID} [FB_31] Core Rest ServicesGETresource/Batch/RetailCustomer/{retailCustomerID}/UsagePoint [FB_31] Core Rest ServicesGETresource/Batch/RetailCustomer/{RetailCustomerId}/UsagePoint/{UsagePointId} [FB_31] Core Rest ServicesGEThttps://services.greenbuttondata.org/DataCustodian/espi/1_1/RetailCustomer/{RetailCustomerID}/UsagePoint/{UsagePointID}/ElectricPowerQualitySummary [FB_31] Core Rest ServicesGET https://services.greenbuttondata.org/DataCustodian/espi/1_1/RetailCustomer/{RetailCustomerID}/UsagePoint/{UsagePointID}/ElectricPowerQualitySummary/{Electri cPowerQualitySummaryID} [FB_31] Core Rest ServicesGEThttps://services.greenbuttondata.org/DataCustodian/espi/1_1/RetailCustomer/{RetailCustomerID}/UsagePoint/{UsagePointID}/ElectricPowerUsageSumary [FB_31] Core Rest ServicesGET https://services.greenbuttondata.org/DataCustodian/espi/1_1/RetailCustomer/{RetailCustomerID}/UsagePoint/{UsagePointID}/ElectricPowerUsageSumary/{ElectricP owerUsageSummaryID} [FB_31] Core Rest ServicesGETresource/RetailCustomer/{RetailCustomerID}/UsagePoint/{UsagePointID}/MeterReading/{MeterReadingID}/IntervalBlock [FB_31] Core Rest ServicesGETresource/RetailCustomer/{RetailCustomerID}/UsagePoint/{UsagePointID}/MeterReading/{MeterReadingID}/IntervalBlock/{IntervalBlockID} [FB_31] Core Rest ServicesGETresource/LocalTimeParameter [FB_31] Core Rest ServicesGETresource/LocalTimeParameter/{LocalTimeParameterID} [FB_31] Core Rest ServicesGETresource/MeterReading [FB_31] Core Rest ServicesGETresource/MeterReading/{MeterReadingID} [FB_31] Core Rest ServicesGETresource/RetailCustomer/{RetailCustomerID}/UsagePoint/{UsagePointID}/MeterReading [FB_31] Core Rest ServicesGETresource/RetailCustomer/{RetailCustomerID}/UsagePoint/{UsagePointID}/MeterReading/{MeterReadingID} [FB_31] Core Rest ServicesGETresource/ReadingType [FB_31] Core Rest ServicesGETresource/ReadingType/{ReadingTypeID} [FB_31] Core Rest ServicesGETresource/Subscription/{SubscriptionID} [FB_31] Core Rest ServicesGETresource/RetailCustomer/{RetailCustomerID}/UsagePoint [FB_31] Core Rest ServicesGETresource/RetailCustomer/{RetailCustomerID}/UsagePoint/{UsagePointID}

88 Scope TermExpansion Scope [ FBTerms ], [ ValueTerms ], [ ResourceTerms ]; FBTerms“FB=“, { [FBTerm], ”_”}, FBTerm, ScopeDelimiter ; FBTerm“4” | “5” | “6” | “7” | “8” | “9” | “10” | “11” | “12” | “15” | “16” | “17” | “18” | “19” | “27” | “28” | “29” ValueTerms{ ( "IntervalDuration=", nonNegativeNumber | namedFrequency), | ( "BlockDuration=", nonNegativeNumber | namedFrequency), | ( "HistoryLength=", nonNegativeNumber), | ( "SubscriptionFrequency=", nonNegativeNumber | namedFrequency), ScopeDelimiter }; ResourceTerms { (“ApplicationInformation,” | “Authorization,” | “UsagePoint,” | “IntervalBlock,” | “MeterReading,” | “ElectricPowerQualitySummary,” | “ElectricPowerUsageSummary,” | “ReadingType,” | “Subscription,” | “LocalTimeParameters,” | (“BulkAccountCollection=”, nonNegativeNumber) | “BR=”, brID), ScopeDelimiter} ScopeDelimiter“;” namedFrequency“billingPeriod” | “daily” | “monthly” | “seasonal” | “weekly” | nonNegativeNumberdigit, { digit }; digit0 | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; Where: ResourceTerms The ESPI resource – default is “Subscription”. If a Bulk resource is specified via the “BR” term, the value of the {bulkID} is provided after the equals sign (“=”). There could be one or more terms in this list that express the granularity of notifications about resource changes. FBTermsThe function blocks supported (only data content FBs are listed) ValueTermsThese are parameterized terms IntervalDurationThis is the minimum default length of an interval in seconds (e.g. 900 for 15 minutes, 3600 for one hour, …) BlockDuration This is the length of a block that contains the intervals (based on enumeration of MacroPeriodKind in ESPI above as namedFrequency) HistoryLength This is the length of history buffer of records in number of Interval Blocks (e.g. 12 for a year if BlockDuration is “monthly”). Note: this is what the DataCustodian offers; however, the buffer may not be full for transitional metering systems; in these cases less data will be returned until the buffer is full. BulkAccountCollection Used where the DC wants to provide for the reporting of multiple UsagePoints in a single Subscription. The number of UsagePoints is represented by the value in the assignment statement – e.g. 4 UsagePoints would be BulkAccountCollection=4.

89 Green Button Connect My Data Testing and Certification Complete function block descriptions – Current: [FB_3] Green Button Connect My Data [FB_13] Security and Privacy classes [FB_14] Authorization and Authentication (OAuth) [FB_19] Partial update data – New?: Core Rest Services – GET Batch/Subscription – … Resource Level REST – GET PUT POST DELETE individual resources … SFTP for Bulk REST for Bulk Use Case 1: Client Registration Query Parameters On Demand Requests (as opposed to Notification followed by GET) PUSH model Offline Authorization to Complement OAuth – should this be outside the scope of standard and testing or standardized? – No standard isolated way to get the token to a third party without OAuth – On exceptional basis some customers can’t be required to use a web account – Sometime commercial accounts don’t need privacy and want a service provider just to register the data. – Could use Notification service to tell TP about new authorizations made by DC. Out of band how RetailCustomer is identified to the TP – “transitive” model TP gets bulk data from DC and then becomes DC – can this architecture be of help here? – Possible provision by DC of access token for conveyence to thirdparty devoid of customer information. Maybe even encrypted for TP as in software activations: » “Please provide this to your TP (the text between the ====) » ============================================= » ashoiqwherfhdjnvcjq2dhijvkqnvoiikdfv » =============================================“

90 Questions retailCustomerID=authorization=subscription – Corresponds to a single authorization – Results in one or more usagePoints being associated with subscription – Scope= “FB=4,5,15;IntervalDuration=3600;BlockDuration=monthly;HistoryLen gth=13;BulkAccountCollection=10” Says that the BulkAccountCollection has 10 usage points Authorization provides two URIs that can be used: resourceUri  GET this to retrieve usage data (all UPs) authorizationUri  GET/PUT details of Authorization Notification is a list of URIs All nested resources under the UPs are accessible under the single authorization

91 Service Request 83 – including Function Block for optional customer info (service point address, etc.)

92 Service Request 84 – having scope selection screen on Data Custodian Site vs 3 rd Party site

93 [85] Time of Use tier indicator alignment with SEP 2.0

94 Here is a list of topics raised by you all that we will touch on Issues Raised and Implementation Questions – How to use BR=bulkID – relates to HD #61 – Service Request 83 – including Function Block for optional customer info (service point address, etc.) – Service Request 84 – having scope selection screen on Data Custodian Site vs 3 rd Party site – Tariff Model Resource Green Button Connect My Data Testing and Certification – Complete function block descriptions – Complete test case requirements

95 How to use BR=bulkID – relates to HD #61 Application Profiles – BulkID was proposed for large sets of authorizations – One account level authorization on top of service level accounts – how to do this Degrees of freedom we have now – can we cover – Subscription – 1 or more Usage Points Granularity of a customer authorization – BulkID “macro” for a large set of existing authorizations – Is there another degree needed?

96 Contributed by Jerry Yip Clarification/confirmation about ESPI standard: Does ‘shared resource key’ referenced in the NAESB Ratified word doc correspond to Access Token for oAuth? Yes: This is the access token in the new Oauth 2.0 paradigm. Formal Submission of Application Profile for bulk (vs. batch?) use case as part of GB/GBC Conformance Testing Plan Write up coming to test concept of BulkIDs Question: (options to address 1 Acct to many SA issue) - Does UUID correspond to usage point (1-to-1 relationship)? Is there passing of UUIDs (as resource terms in Scope section of GBAuthorization) during authorization sequence? (how would 3 rd Party know multiple usage points have been authorized via single oAuth sequence/login?) - Can multiple access tokens be issued (1 token per SA) per oAuth session? An Authorization is one access_token How does Third Party get to know the depth of data (how many Ups) are in the authorization Perhaps an extension of scope string to have numUPs? Request to consider scope selection screens at Data Custodian Portal instead of 3 rd party portal (Need customer to select SAs to share – only Data Custodian has that info) – also minimizes number of redirects (?) Customer info as optional functional block (atom feed) for authorization (sharing with 3Ps) John suggests – prep a large multi account data set and test against a reference sw implementation and measure. SFTP and Streaming, compressed and non-compressed method and compare.

97 =

98 How to use BR=bulkID with application to account and account groupings, as well as, large ThirdParty collections of Authorizations Establish Use Case Story for Commercial Accounts Design Scope String(s) that convey it Repaint the storyboard with appropriate content

99 Application Profile Per footnote 1, pg 20 of GBAuthorization.doc: – A “Web Customer” may actually manage more than one “Retail Customer” where “Retail Customer” is an actual “Customer Account”. Thus identifying the specific Retail Customer may be part of the scope selection on both sides. The scenarios in this section refer to the “Retail Customer” for simplicity. Suggest: new FB or Application Profile to properly capture this scenario [FB_31] Web Customer Manages Multiple Customer Accounts (OR: 3.9 Application Profile) For GBCMD, this FB/AP contains tests associated with a Web Customer accessing a Data Custodian’s Web Portal to manage multiple customer accounts. Upon log in to the Data Custodian’s Web Portal, the web customer can manage multiple customer accounts, for which each customer account can represent multiple usage points (for electricity and/or gas). This mostly impacts large agricultural and commercial customer accounts for which a single web customer can represent hundreds to thousands of individual usage points – imagine a franchise manager with multiple branch locations across a data custodian’s service territory. In this scenario, the Web Customer should have the ability to authorize, deauthorize and change scope on an individual “usage point” basis and optionally at the larger aggregated web customer or customer account basis. This includes the ability to perform one-time authorization of multiple customer accounts by a single web customer to third party, and any subsequent scope changes (whether on an aggregated or individual basis) – third party acknowledgement/communication of which customer accounts have been authorized, deauthorized or whose scope has changed needs to be determined. Notes: – Whether scope selection in this scenario should live on the 3 rd party portal vs. the Data Custodian’s portal needs to be determined as well. – Collection has one description or multiple? – What is the scope string for this use case? – Is there a need for a bulkId in this case (maybe not). – New Scope Resource Term= “BulkAccountCollection” – Scope= “FB=4,5,15;IntervalDuration=3600;BlockDuration=monthly;HistoryLength=13;BulkAccountCollection” 1/14/2014 – To allow the TP to know how many Ups are being provided, suggest Add to BulkAccountCollection a number of UsagePoints BulkAccountCollection=nnn

100 UsagePoint Grouping in Commercial Account Management BulkId SubscriptionId UsagePointId /web account Via gui Scope= “FB=4,5,15;IntervalDuration=3600;BlockDuration=monthly;HistoryLength=13;BulkAccountCollection”


Download ppt "Weekly OpenADE Meeting Notes Tuesday, November 18, 2014."

Similar presentations


Ads by Google